Neo4j 如何查询所有 children 个节点
Neo4j How to query to all children nodes
在图片中,您可能会看到一个图表示例。
如果我查询
MATCH (u:UserNode)-[:PROMOTER_OF]->(c:UserNode)
where u.promoterName="Antal"
RETURN u;
我只得到 MAIEREAN 结果。但是如果我展开 MAIEREAN,我可以看到 SAMOILA 有 MESTER、NICA 和 SOMOGYI 作为 children 等等...
我想知道:从 Antal 开始,我如何编写查询才能显示所有 children、孙子、曾祖 children 等等,从第一个到第一个最后一个?
(仅供参考:我事先不知道层次结构有多长)。
我知道像 OPTIONAL MATCH 这样的东西,所以我尝试了这个
Match (u:UserNode)
WHERE u.promoterName="Antal"
OPTIONAL MATCH (u)-[:PROMOTER_OF]->(c:UserNode)
RETURN c;
但它将return相同
也许您正在寻找:
MATCH (u:UserNode{promoterName:"Antal"})-[:PROMOTER_OF*]->(c:UserNode)
RETURN c;
您可以添加一个数字和星号(例如 PROMOTER_OF* 3)或一个范围(例如 PROMOTER_OF* 1..5)。
如果您有大量数据,我不建议使用纯星号。
在图片中,您可能会看到一个图表示例。 如果我查询
MATCH (u:UserNode)-[:PROMOTER_OF]->(c:UserNode)
where u.promoterName="Antal"
RETURN u;
我只得到 MAIEREAN 结果。但是如果我展开 MAIEREAN,我可以看到 SAMOILA 有 MESTER、NICA 和 SOMOGYI 作为 children 等等...
我想知道:从 Antal 开始,我如何编写查询才能显示所有 children、孙子、曾祖 children 等等,从第一个到第一个最后一个? (仅供参考:我事先不知道层次结构有多长)。
我知道像 OPTIONAL MATCH 这样的东西,所以我尝试了这个
Match (u:UserNode)
WHERE u.promoterName="Antal"
OPTIONAL MATCH (u)-[:PROMOTER_OF]->(c:UserNode)
RETURN c;
但它将return相同
也许您正在寻找:
MATCH (u:UserNode{promoterName:"Antal"})-[:PROMOTER_OF*]->(c:UserNode)
RETURN c;
您可以添加一个数字和星号(例如 PROMOTER_OF* 3)或一个范围(例如 PROMOTER_OF* 1..5)。 如果您有大量数据,我不建议使用纯星号。