繁体   English   中英

Neo4j cypher-计算根节点的直接子代

[英]Neo4j cypher - Counting immediate children of root nodes

尽管阅读了大量文档,但我仍在努力解决问题...我试图找到我的图形根节点(或节点,它们可能是几个顶级节点)并计算其直属子节点(所有关系均输入:BELONGS_TO )

我的图看起来像这样(参见随附的屏幕截图)。 我一直在尝试以下查询,只要根节点只有一个传入关系,并且在具有多个传入关系时,它就不会起作用。 (我还不太熟悉cyhper语言)。

MATCH (n:Somelabel) WHERE NOT (()-[:BELONGS_TO]->(n:Somelabel)) RETURN n

任何帮助将非常感激 ! (我什至还没有尝试计算根节点的直接子节点...根据我的图表,该根节点将为“ 2”)

在此处输入图片说明

Cyber​​sam给出了正确的查询

MATCH (n:Somelabel) WHERE NOT (n)-[:BELONGS_TO]->() RETURN n;

MATCH (n:Somelabel)<-[:BELONGS_TO]-(c:Somelabel)
WHERE NOT (n)-[:BELONGS_TO]->() RETURN n, count(c);

根据您的图表,看起来您实际上是在寻找“叶子”节点。 此查询将搜索所有没有传出关系的Somelabel节点,并返回每个此类节点以及具有指向该节点的关系的不同节点数的计数。

MATCH (n:Somelabel)
WHERE NOT (n)-[:BELONGS_TO]->()
OPTIONAL MATCH (m)-[:BELONGS_TO]->(n)
RETURN n, COUNT(DISTINCT m);

如果您实际上正在寻找所有“根”节点,那么您原来的查询就可以了。

作为健全性检查,如果您有一个特定的节点,您认为它是“叶”节点(假设其id值为123),则此查询应返回一行,其中rmnull值。 如果得到非空结果,则实际上是外向关系。

MATCH (n {id:123})
OPTIONAL MATCH (n)-[r]->(m)
RETURN r, m

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM