我在Neo4j中有一个包含节点和关系的数据集。像这样:
(a)-[r:sel]-(x)
(a)-[r:sel]-(y)
(a)-[r:sel]-(z)
(a)-[r:sel]-(w)
(b)-[r:sel]-(z)
(b)-[r:sel]-(y)
(c)-[r:sel]-(z)
节点x,y,z和w具有带属性的标签DEP(例如:DEP.type)。 y和z具有相同的属性(DEP.type的定义相同)。
我想只选择(b)等节点,而不选择(a)等节点 换句话说,节点仅在下面写的区域中:
有没有人有任何建议? 祝福,
答案 0 :(得分:2)
此查询返回与sel
具有a
关系的所有节点的集合,当且仅当集合具有多个节点且所有节点具有相同的type
值时
MATCH (a)-[r:sel]-(x)
WITH a, COLLECT(x) AS col, LENGTH(COLLECT(DISTINCT x.type)) AS numTypes
WHERE numTypes = 1 AND LENGTH(col) > 1
RETURN a, col;
此查询返回与sel
具有a
关系的所有节点的集合,当且仅当集合具有多个节点且整个集合具有指定值的指定属性时(在此示例中,type = foo
)。
MATCH (a)-[r:sel]-(x)
WHERE x.type = 'foo'
WITH a, COLLECT(x) AS col
WHERE LENGTH(col) > 1
RETURN a, col;