Reputation: 685
I want to find as specific string using Cypher from a array property.
Assuming i have following kind of data with only property key i.e., "cpeidofCVE":
Query:
MATCH (n:CpeOfCVE) RETURN n LIMIT 2
Output:
n
{
"cpeidOfCVE": [
"cpe:2.3:o:bsdi:bsd_os:3.1",
"cpe:2.3:o:freebsd:freebsd:1.0",
"cpe:2.3:o:freebsd:freebsd:1.1",
"cpe:2.3:o:freebsd:freebsd:1.1.5.1",
"cpe:2.3:o:freebsd:freebsd:1.2",
"cpe:2.3:o:freebsd:freebsd:2.0",
"cpe:2.3:o:freebsd:freebsd:2.0.1",
"cpe:2.3:o:freebsd:freebsd:2.0.5",
"cpe:2.3:o:freebsd:freebsd:2.1.5",
"cpe:2.3:o:freebsd:freebsd:2.1.6",
"cpe:2.3:o:freebsd:freebsd:2.1.6.1",
"cpe:2.3:o:freebsd:freebsd:2.1.7",
"cpe:2.3:o:freebsd:freebsd:2.1.7.1",
"cpe:2.3:o:freebsd:freebsd:2.2",
"cpe:2.3:o:freebsd:freebsd:2.2.2",
"cpe:2.3:o:freebsd:freebsd:2.2.3",
"cpe:2.3:o:freebsd:freebsd:2.2.4",
"cpe:2.3:o:freebsd:freebsd:2.2.5",
"cpe:2.3:o:freebsd:freebsd:2.2.6",
"cpe:2.3:o:freebsd:freebsd:2.2.8",
"cpe:2.3:o:freebsd:freebsd:3.0",
"cpe:2.3:o:openbsd:openbsd:2.3",
"cpe:2.3:o:openbsd:openbsd:2.4"
]
}
{
"cpeidOfCVE": [
"cpe:2.3:o:bsdi:bsd_os:1.1",
"cpe:2.3:o:caldera:openlinux:1.2",
"cpe:2.3:o:redhat:linux:2.0",
"cpe:2.3:o:redhat:linux:2.1",
"cpe:2.3:o:redhat:linux:3.0.3",
"cpe:2.3:o:redhat:linux:4.0",
"cpe:2.3:o:redhat:linux:4.1",
"cpe:2.3:o:redhat:linux:4.2",
"cpe:2.3:o:redhat:linux:5.0",
"cpe:2.3:o:redhat:linux:5.1"
]
}
How can i search for a string let's say "cpe:2.3:o:redhat:linux:3.0.3" that exist in second node's array values ?
Thanks
Upvotes: 0
Views: 32
Reputation: 2905
You can use the IN
operator for this:
MATCH (n: CpeOfCVE)
WHERE "cpe:2.3:o:redhat:linux:3.0.3" IN n.cpeidOfCVE
RETURN n
Upvotes: 1