我有一个问题,我一直在努力。
基本上我想要实现的是检查是否可以在多个节点中找到某个总和..例如..我有一个名为balance的属性的帐户节点。数据如下:25,2000,43,45,2000,65。
我希望能够检查此用户是否有超过2个帐户(例如..可能更多)。
不确定我是否自己解释得很好,而且我对密码世界不熟悉。
我将不胜感激。
由于
答案 0 :(得分:0)
您可以通过采用帐户余额的所有组合,对两者进行求和以及比较来解决此问题。
APOC Procedures是Neo4j的一个插件,它添加了许多有用的过程和函数。其中一个apoc.coll.combinations()
在这种情况下可以提供帮助,但是由于一个错误,它没有包含在3.3.0.1或3.3.0.2(当前可用于Neo4j 3.3.x的版本)中。
如果您使用的是3.2.x,或者下一个版本的APOC 3.3.x.x出现,您可以使用该函数生成列表元素的所有可能组合。
以下是使用示例:
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