【问题标题】:Neo4J Cypher combine 2 queries into oneNeo4J Cypher 将 2 个查询合二为一
【发布时间】:2017-03-07 11:41:23
【问题描述】:

我有 2 种节点类型,比如说 A 和 B,以及与属性的关系,我们称它为 'a_has_b' 和属性 'value'

首先我想计算类型 A 的特定节点具有的关系数。

MATCH (a:A)-[r:a_has_b]->(b:B) 
WHERE a.id='123'
RETURN COUNT(r) as count

我还想从关系中获取按属性排序的前 n 个 B

MATCH (a:A)-[r:a_has_b]->(b:B)
WHERE a.id='123'
RETURN r, b
ORDER BY r.value
LIMIT 3

现在,很明显我做了两次同样的事情,改变了返回值。

如何将它们组合在一起以获得所需的结果?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    你可以结合collect和range:

    MATCH  (a:A)-[r:a_has_b]->(b:B) 
           WHERE a.id='123'
    WITH   a, 
           r, 
           b 
           ORDER BY r.value
    RETURN a, 
           COUNT(r) AS count, 
           COLLECT([r,b])[0..3] AS rels
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2017-12-24
      相关资源
      最近更新 更多