2016-06-01 6 views
1

Ich habe die folgende Abfrage:Neo4j: Holen Sie sich alle Beziehungen innerhalb einer Gruppe von Knoten

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; 

ich alle Document Knoten filtern, um ein Schlüsselwort und erhalten die Top 20 Alias ​​Knoten bestellt, wie oft sie verbunden sind, die enthalten Dokumentknoten. Danach werden alle Agenten, die mit den Alias-Knoten verbunden sind, gesammelt und zurückgegeben.

Dies gibt mir eine Reihe von Agent-Knoten. Außerdem möchte ich alle Beziehungen innerhalb dieser Agentenknotengruppe erhalten. Dies bedeutet, dass die Anzahl der zurückkommenden Knoten identisch sein sollte. Nur Beziehungen zwischen diesen Knoten sollten hinzugefügt werden.

Wie kann ich dies ohne eine zusätzliche Abfrage erreichen?

Antwort

3

Hier ist, wie Sie alle direkten Beziehungen bekäme zwischen alle Agent von Ihrer ursprünglichen Abfrage zurückgegeben Knoten:

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; 
+0

Funktioniert das gut? Scheint so, als könnte die Abwicklung einige Leistungsprobleme verursachen – bryanph

1

weiterhin einfach Ihre Anfrage:

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 
+0

'OPTIONAL MATCH (ag) - [r] -() 'Passt das nicht zu allen verbundenen Knoten? Ich möchte nur die Beziehungen zu Knoten, die bereits in meiner vorherigen Ergebnismenge sind. – fwind

+0

Diese Übereinstimmung bezieht sich auf alle Agentenknoten –

+0

Sie möchten nur Beziehungen zwischen den Knoten ': Agent', die an' ag' gebunden sind. –

Verwandte Themen