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

Neo4j/Cypher:如何排除/包括具有多个属性的节点?,neo4j,cypher,Neo4j,Cypher,我有一个具有多个属性的节点集合,例如: (:项{id:1,类型:10}) (:项目{id:2,类型:10}) (:项{id:1,类型:11}) (:项{id:1,类型:13}) (:项目{id:2,类型:11}) 在其他示例中,我可以使用如下查询(使用In子句),使用单个值包含节点: 我正在尝试包含/排除具有某些属性的节点,类似于下一个查询: MATCH (x:Item) WHERE x IN [({id: 1, type: 10}), ({id: 2, type: 11})] RETU

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

  • (:项{id:1,类型:10})
  • (:项目{id:2,类型:10})
  • (:项{id:1,类型:11})
  • (:项{id:1,类型:13})
  • (:项目{id:2,类型:11})
在其他示例中,我可以使用如下查询(使用In子句),使用单个值包含节点:

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

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

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

x
在您的示例中,不仅仅是一个带有
类型和
id
的映射,它是一个表示完整节点的标识符

如果将
x
重写为
x.id
x.type
的映射,则可以进行比较

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