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;