Neo4j / Cypher:如何排除/包含具有多个属性的节点?

时间:2018-03-22 04:40:59

标签: neo4j cypher

我有一组具有多个属性的节点,例如:

  • (:Item {id:1,type:10})
  • (:Item {id:2,type:10})
  • (:Item {id:1,type:11})
  • (:Item {id:1,type:13})
  • (:Item {id:2,type:11})

在其他示例中,我可以使用像这样的查询(使用IN子句)包含使用单个值的节点:

MATCH (x:Item) 
WHERE x.type IN [10,13] 
RETURN x

我试图包含/排除具有某些属性的节点,类似于下一个查询:

MATCH (x:Item) 
WHERE x IN [({id: 1, type: 10}), ({id: 2, type: 11})] 
RETURN x

通过上述查询我没有收到错误,但我也没有得到任何结果。是否有可能包含或排除某些节点?在上面的例子中,对于2个节点可以更容易地进行2-MATCH,但在实际问题中,我想动态地包含/排除10个以上的节点。

1 个答案:

答案 0 :(得分:1)

您的示例中的

x远不止是typeid的地图,而是代表整个节点的标识符。

如果您将x重写为x.idx.type的地图,那么您可以进行比较。

MATCH (x:Item) 
WHERE {id: x.id, type: x.type} IN [({id: 1, type: 10}), ({id: 2, type: 11})] 
RETURN x