Faaiz
Faaiz

Reputation: 685

Find a specific string in Array Property Value

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

Answers (1)

Pablissimo
Pablissimo

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

Related Questions