基于求和关系属性数组的CYPHER查询
CYPHER query based on sum relationship property array
在我的图表中,关系有一个名为 list
的 属性。 list
是一个int数组。
看起来像这样:
(head:Node)-[r:RELATIONSHIP {list:...}]->(tail:Node)
我想查询图中的所有尾部,其中列表的总和> 0。
直觉上,我会这样做:
MATCH (:Node)-[r:RELATIONSHIP]->(tail:Node)
WHERE sum(r.list) > 0
RETURN tail
不幸的是,这不起作用。它抛出一个错误。我怎样才能写这个查询?
谢谢
我认为这会满足您的要求
匹配 p=(n1:节点)-[:关系*2..2]->(n2:节点)
以 n1 作为头部,n2 作为尾部,REDUCE(totalScore = 0.0, r in relationships(p) | totalScore + toFloat(r.score)) 作为分数
其中得分> 1.99
return head.name, tail.name, 分数
备注:
在我的示例中,我将固定路径长度指定为 2,以便我可以轻松检查总分...
如果您的图表具有双向关系或循环,请知道 head=tail 是可能的...
这应该适合你:
MATCH (:Node)-[r:RELATIONSHIP]->(tail:Node)
WHERE REDUCE(s = 0, v IN r.list | s + v) > 0
RETURN tail
在我的图表中,关系有一个名为 list
的 属性。 list
是一个int数组。
看起来像这样:
(head:Node)-[r:RELATIONSHIP {list:...}]->(tail:Node)
我想查询图中的所有尾部,其中列表的总和> 0。
直觉上,我会这样做:
MATCH (:Node)-[r:RELATIONSHIP]->(tail:Node)
WHERE sum(r.list) > 0
RETURN tail
不幸的是,这不起作用。它抛出一个错误。我怎样才能写这个查询? 谢谢
我认为这会满足您的要求
匹配 p=(n1:节点)-[:关系*2..2]->(n2:节点) 以 n1 作为头部,n2 作为尾部,REDUCE(totalScore = 0.0, r in relationships(p) | totalScore + toFloat(r.score)) 作为分数 其中得分> 1.99 return head.name, tail.name, 分数
备注: 在我的示例中,我将固定路径长度指定为 2,以便我可以轻松检查总分... 如果您的图表具有双向关系或循环,请知道 head=tail 是可能的...
这应该适合你:
MATCH (:Node)-[r:RELATIONSHIP]->(tail:Node)
WHERE REDUCE(s = 0, v IN r.list | s + v) > 0
RETURN tail