【问题标题】:Aggregate over a list of matching nodes聚合匹配节点列表
【发布时间】:2015-07-13 22:12:54
【问题描述】:

我有一个 Cypher 查询,我想扩展它以总结匹配节点列表。

我的查询如下所示:

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

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

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

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

我使用的是 Neo4j 2.1 或 2.2。

干杯

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您可以使用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']
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2017-11-25
      • 2019-10-31
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多