Cypher多重聚合查询学习

2024-12-31  本文已影响0人  AI_Finance

以下解读这个查询所包含的知识点:

MATCH (n:Node)
        WHERE NOT n.id IN $blacklist
        OPTIONAL MATCH (n)-[r:RELATES_TO]->(m:Node)
        WHERE NOT m.id IN $blacklist
        RETURN 
            collect(DISTINCT {id: n.id, label: n.id, group: labels(n)[0]}) +
            collect(DISTINCT {id: m.id, label: m.id, group: labels(m)[0]}) AS nodes,
            collect(DISTINCT {from: startNode(r).id, to: endNode(r).id, weight: r.weight}) AS edges
        LIMIT $limit请根据这个查询,帮我详细解读一下cypher语法相关知识

好的!让我来逐步详细解读这个 Cypher 查询,同时讲解相关的 Cypher 语法知识。


查询结构和功能拆解

1. MATCH (n:Node)


2. WHERE NOT n.id IN $blacklist


3. OPTIONAL MATCH (n)-[r:RELATES_TO]->(m:Node)


4. WHERE NOT m.id IN $blacklist


5. RETURN


6. collect(DISTINCT {id: n.id, label: n.id, group: labels(n)[0]})


7. collect(DISTINCT {from: startNode(r).id, to: endNode(r).id, weight: r.weight})


8. LIMIT $limit


完整查询解读

这段查询的完整流程如下:

  1. 匹配所有带有 Node 标签的节点 n,并过滤掉黑名单中的节点。
  2. 尝试匹配从 n 出发的 RELATES_TO 关系,以及关系的终点节点 m
  3. 对终点节点 m 也进行黑名单过滤。
  4. 收集所有节点(包括 nm)的信息,并去重。
    • 每个节点返回 {id, label, group}
  5. 收集所有关系 r 的信息,并去重。
    • 每个关系返回 {from, to, weight}
  6. 限制返回的记录数量,最多返回 $limit 条记录。

Cypher 语法知识补充

1. 图模式匹配

2. 过滤条件

3. 聚合函数

4. 参数化查询


通过上述解读,你应该对这段 Cypher 查询的功能和语法有了全面的了解。如果还有不清楚的地方,欢迎随时提问!

上一篇 下一篇

猜你喜欢

热点阅读