繁体   English   中英

在 neo4j 中计算节点深度

[英]Count node depth in neo4j

我在 Neo4j 中有这个查询:

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, COUNT(r) AS c
RETURN n, c

我的图表是一个语言数据库,其中包含单词和它们之间的依赖关系。 这个查询应该返回节点的深度,但是 COUNT(r) 总是返回 1。当我省略 COUNT 函数并只写

WITH n, r AS c

相反(在网络浏览器 neo4j 界面中尝试),neo4j 按预期返回每个单词节点“n”的多个关系。 你能帮我我在做什么错吗,如何计算句子节点和单词节点之间的路径长度? 谢谢。

我认为它查询返回 n 和 c,并且 n 有多个记录,因此 count(r) 返回 1。

尝试这个 -

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, LENGTH(r) AS depth
RETURN n, depth

你会得到这样的深度。

或者试试这个

   MATCH p= (sentence:Sentence)-->(n:Word)    
   RETURN n, length(p) as depth

http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-length

终于自己找到了解决方案 - 它是 cypher 的 LENGTH 函数:

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, LENGTH(r) AS c
RETURN n, c

在这个有用的备忘单中找到:http: //assets.neo4j.org/download/Neo4j_CheatSheet_v3.pdf

在 4.x 版本中,U 应该使用SIZE函数

MATCH (sentence:Sentence)-[r*]->(n:Word )
WITH n, SIZE(r) AS depth
RETURN n, depth

https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-size

暂无
暂无

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

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