Neo4j 在多个节点上获得匹配总和

凯文·考奇

我有一个我一直在努力解决的问题。

基本上我想要实现的是检查是否可以在多个节点中找到某个总和..例如..我有一个名为 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章