A. L
A. L

Reputation: 12649

neo4j - cypher query to find nodes which properties match object parameter

I'm looking for a query which can find all of the nodes which have properties that match a parameter which is an object. The properties of the node can be a superset (contain more properties than the filter)

e.g.

:param obj : { first : "first" }

CREATE (n:Test { first : "first", second : "second" });
CREATE (m:Test { first : "first" });
CREATE (f:Fail { first : "bad", second : "second" });
MATCH (c)
    WHERE
        PROPERTIES(c) = $obj
RETURN c;

n and m should be returned as they are matching on first : "first"

Upvotes: 1

Views: 473

Answers (1)

Graphileon
Graphileon

Reputation: 5385

it is doable with apoc, basically by matching the obj with a submap of the properties, containing only the keys that are also present in obj

WITH { first : "first" } AS obj
MATCH (c)
WHERE apoc.map.submap(properties(c),keys(obj),[],false)= obj
RETURN c

Upvotes: 2

Related Questions