聚合匹配节点列表

时间:2015-07-13 22:12:55

标签: neo4j cypher

我有一个Cypher查询,我希望将其扩展为在匹配节点列表中进行总结。

我的查询如下:

 MATCH (u:User {name: {input} })-[r:USES]-(t) RETURN SUM(t.weight)

这匹配一个用户节点,我想调整它以匹配用户节点列表,然后执行聚合。

我当前的实现只是在循环中调用查询并在Cypher之外执行聚合。这会导致稍微不准确的结果和大量的API调用。

有没有办法根据元素列表(我的字符串中的字符串)来评估Cypher查询?

我使用的是Neo4j 2.1或2.2。

干杯

1 个答案:

答案 0 :(得分:2)

您可以使用IN运算符并传入一组用户名:

MATCH (u:User)-[r:USES]-(t) 
WHERE u.name in ['John','Jim','Jack']
RETURN u.name, SUM(t.weight)

您可以使用参数保持和数组值代替此处的数组:

MATCH (u:User)-[r:USES]-(t) 
WHERE u.name in {userNames}
RETURN u.name, SUM(t.weight)

userNames = ['John','Jim','Jack']