Neo4J查找未引用的节点

时间:2013-09-14 23:47:48

标签: neo4j

我有一个neo4j数据库,有两类关系:CONTAINS和REFERENCES,它由关系本身的“RelationshipType”属性决定。我正在尝试查找节点(根据定义,它将从其父节点传入给它的CONTAINS关系),但没有REFERENCES关系。

我的查询如下。

START source=node(828)
MATCH source-[contains]->target<-[references?]-reference
WHERE contains.RelationshipType='CONTAINS'
AND references.RelationshipType='REFERENCES'
AND reference = null
RETURN target.Id

1 个答案:

答案 0 :(得分:0)

没有任何内容都是NULL并且具有属性“RelationshipType”,这就是结果为空的原因。

您只需指定关系“references”为null,如下所示,

START source=node(828)
MATCH source-[contains]->target<-[references?]-reference
WHERE contains.RelationshipType='CONTAINS' AND reference = null
RETURN target.Id

如果“目标”可能具有“REFERENCES”以外的传入关系,则可以指定“target”的任何传入关系都不应属于“REFERENCE”属性类型,

START source=node(828)
MATCH source-[contains]->target, path=target<-[references?]-reference
WHERE contains.RelationshipType='CONTAINS' AND NONE ( r in relationships(path) where r.RelationshipType='REFERENCES')
RETURN target.Id