Neo4j:获取一组节点内的所有关系
Neo4j: Get all relations within a set of nodes
我有以下查询:
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;
我筛选了所有包含关键字的文档节点,并获取前 20 个别名节点,这些节点按它们连接到文档节点的频率排序。之后,收集并返回所有连接到 Alias 节点的代理。
这给了我一组代理节点。除此之外,我想获得这组代理节点中的所有关系。这意味着返回的节点集应该是相同的。只应添加这些节点之间的关系。
如何在没有额外查询的情况下实现此目的?
请继续您的查询:
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
以下是您如何获得原始查询返回的所有 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;
我有以下查询:
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;
我筛选了所有包含关键字的文档节点,并获取前 20 个别名节点,这些节点按它们连接到文档节点的频率排序。之后,收集并返回所有连接到 Alias 节点的代理。
这给了我一组代理节点。除此之外,我想获得这组代理节点中的所有关系。这意味着返回的节点集应该是相同的。只应添加这些节点之间的关系。
如何在没有额外查询的情况下实现此目的?
请继续您的查询:
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
以下是您如何获得原始查询返回的所有 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;