代码之家  ›  专栏  ›  技术社区  ›  fwind

Neo4j:获取一组节点中的所有关系

  •  1
  • fwind  · 技术社区  · 8 年前

    我有以下疑问:

    MATCH (d:Document)<-[o:OCCURS_IN]-(a:Alias)
    WHERE LOWER(d.content) contains 'keyword'
    WITH COUNT(o) as degree, a as a ORDER BY degree DESC LIMIT 20
    MATCH (a)<-[:KNOWN_AS]-(ag:Agent)
    RETURN ag;
    

    我过滤所有包含关键字的Document节点,并按连接到Document节点的频率排序前20个Alias节点。之后,将收集并返回连接到Alias节点的所有Agent。

    这为我提供了一组代理节点。除此之外,我还希望获得这组代理节点中的所有关系。这意味着返回的节点集应该相同。只应添加这些节点之间的关系。

    我如何在没有附加查询的情况下归档此文件?

    2 回复  |  直到 8 年前
        1
  •  3
  •   cybersam    8 年前

    以下是你如何获得所有直接关系 之间 所有的 Agent 原始查询返回的节点:

    MATCH (d:Document)<-[o:OCCURS_IN]-(a:Alias)
    WHERE LOWER(d.content) contains 'keyword'
    WITH COUNT(o) as degree, a ORDER BY degree DESC LIMIT 20
    MATCH (a)<-[:KNOWN_AS]-(ag:Agent)
    WITH COLLECT(ag) AS ags
    UNWIND ags AS ag1
    UNIWND ags AS ag2
    MATCH (ag1)-[r]->(ag2)
    RETURN r;
    
        2
  •  1
  •   Christophe Willemsen    8 年前

    只需继续您的查询:

    MATCH (d:Document)<-[o:OCCURS_IN]-(a:Alias)
    WHERE LOWER(d.content) contains 'keyword'
    WITH COUNT(o) as degree, a as a ORDER BY degree DESC LIMIT 20
    MATCH (a)<-[:KNOWN_AS]-(ag:Agent)
    OPTIONAL MATCH (ag)-[r]-()
    RETURN ag, collect(r) as relationships