我有一个我一直在努力解决的问题。
基本上我想要实现的是检查是否可以在多个节点中找到某个总和..例如..我有一个名为 balance 的属性的帐户节点。数据如下:25、2000、43、45、2000、65。
我希望能够检查这个用户是否有超过 2 个帐户的 4000 个(例如……可能更多)。
不确定我是否很好地解释了自己,而且我是密码世界的新手。
我将不胜感激任何帮助。
谢谢
您可以通过采用帐户余额的所有组合,将两者相加并进行比较来解决此问题。
APOC Procedures是 Neo4j 的一个插件,它增加了许多有用的过程和功能。其中之一,apoc.coll.combinations()
,在这种情况下可以提供帮助,但由于一个错误,它没有包含在 3.3.0.1 或 3.3.0.2(当前可用于 Neo4j 3.3.x 的版本)中。
如果您使用的是 3.2.x,或者当 APOC 3.3.xx 的下一个版本发布时,您可以使用该函数生成列表元素的所有可能组合。
下面是一个使用示例:
WITH [25, 2000, 43, 45, 2000, 65] as balances
WITH apoc.coll.combinations(balances, 2) as combos
RETURN [combo in combos WHERE combo[0] + combo[1] = 4000] as balancesSummingto4k
在您的情况下,如果您只想检查用户的余额总和是否为一个数字,则它可能如下所示:
MATCH (:User{id:12345})-[:HAS_BALANCE]->(b:AccountBalance)
WITH apoc.coll.combinations(collect(b), 2) as combos
RETURN size([combo in combos WHERE combo[0].balance + combo[1].balance = 4000]) <> 0 as hasBalancesSummingTo4k
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句