繁体   English   中英

Cypher (Neo4j) 匹配具有特定长度和值的所有路径

[英]Cypher (Neo4j) Match all paths with specific length and value

我是 Cypher 和 Neo4j 的新手,但我发现它真的很有趣,并试图用它来解决我遇到的数学问题。 为了使问题易于说明,我将其按比例缩小,希望您能帮助我找到正确的逻辑。

数学问题:给定一组瓷砖,你可以有多少种方式 select 3 个瓷砖,总和小于 x?

在我的示例中,假设我有 5 个图块(100、100、80、80、50),并且我必须至少包含一个 100 块,并且 x 为 270。

由于顺序无关紧要,所以我考虑问题的方式是从最高的 nr 开始,然后从那里可以选择 go 到相同的 nr,或者下一个较低的数字,或者第二个较低的数字. 这意味着,从 100 开始,我可以选择 select 或者另外 100,或者 80(下一个较低的),或者 50(第二个较低的)。

到目前为止,我能够定义从 100 开始并进一步到 m 2 步的路径:

MATCH path = (n:Node {value:100})-[:CONNECTED*2]-(m)

问题:如何找到具有特定节点值总和的所有路径? 由于顺序无关紧要,我只对独特的单向路径感兴趣。 (意思是,例如,如果我得到一个路径为 100-80-50,那么我对路径 50-80-100 不感兴趣,因为它包含完全相同的图块,只是顺序不同)。

谢谢!

neo4j 图像

你的意思是这个?

MATCH path = (n:Node {value:100})-[:CONNECTED*2]-(m)
WITH REDUCE(x=0,n in nodes(path)|x+n.value) as expected, [n in nodes(path)|n.value] as listNode
WHERE expected >100
RETURN listNode

暂无
暂无

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

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