【问题标题】:Is it possible to query relations from two node which the number of relation greater than a certain value是否可以从关系数大于某个值的两个节点查询关系
【发布时间】:2020-11-23 03:55:27
【问题描述】:

我是刚开始学习图数据库的新手,在查询节点之间的关系时遇到了问题。

我的图表是这样的:

一个节点到另一个节点有多个关系,这些关系的ID不同。

如何找到两个节点之间的关系数大于2的关系,或者这个图的模型有问题?

就像在图上一样,我想查询节点d和节点a

我尝试使用以下语句,但结果不正确:

match (from)-[r:INVITE]->(to)
with from, count(r) as ref
where ref >2
return from

好像是统计所有from发出的关系个数,而不是from-->to之间的关系。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    要返回它们之间有超过 2 个关系的节点,您需要检查收集的 rel 的大小。像

    MATCH (x:Person)-[r:INVITE]-(:Party)
    WITH x, size(collect(r)) as inviteCount
    WHERE inviteCount > 2
    RETURN x
    

    【讨论】:

      【解决方案2】:

      Aggregating functionsCOLLECTCOUNT 一样,在同一 WITH(或 RETURN)子句中使用非聚合术语作为“分组键”。

      因此,这是获取在它们之间具有超过 2 个INVITE 关系(在特定方向上)的节点对的一种方法:

      MATCH (from)-[r:INVITE]->(to)
      WITH from, to, COUNT(r) AS ref
      WHERE ref > 2
      RETURN from, to
      

      注意:理想情况下(为了清晰和高效),您的节点将具有特定的 labels 并且 MATCH 模式将指定这些标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多