在 Neo4J 中为 parents 和 children 查询一定数量的节点
Querying for a set number of nodes for both parents and children in Neo4J
给定以下数据集:
(a)-[:PARENT]->(b)
(b)-[:PARENT]->(c)
(c)-[:PARENT]->(d)
(d)-[:PARENT]->(e)
(e)-[:PARENT]->(f)
(g)-[:PARENT]->(h)
(h)-[:PARENT]->(i)
我希望能够从 "D" 节点遍历 parents 和 children 的图,并限制在结果集中完成的跳数(即我只想返回并转发两跳,以获取从 "B" 到 "H" 节点结束的数据,但忽略所有其他代)。
这个查询是否符合您的要求?它假定所有节点都有一个 id
属性 和一个字符串值。
MATCH p=()-[:PARENT*..2]->(x)-[:PARENT*..2]->()
WHERE x.id = 'd'
WITH DISTINCT NODES(p) AS np
UNWIND np AS n
RETURN COLLECT(DISTINCT n.id)
根据您的数据,结果将是 ["b","c","d","e","f"]
。
给定以下数据集:
(a)-[:PARENT]->(b)
(b)-[:PARENT]->(c)
(c)-[:PARENT]->(d)
(d)-[:PARENT]->(e)
(e)-[:PARENT]->(f)
(g)-[:PARENT]->(h)
(h)-[:PARENT]->(i)
我希望能够从 "D" 节点遍历 parents 和 children 的图,并限制在结果集中完成的跳数(即我只想返回并转发两跳,以获取从 "B" 到 "H" 节点结束的数据,但忽略所有其他代)。
这个查询是否符合您的要求?它假定所有节点都有一个 id
属性 和一个字符串值。
MATCH p=()-[:PARENT*..2]->(x)-[:PARENT*..2]->()
WHERE x.id = 'd'
WITH DISTINCT NODES(p) AS np
UNWIND np AS n
RETURN COLLECT(DISTINCT n.id)
根据您的数据,结果将是 ["b","c","d","e","f"]
。