[英]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.