2017-06-09 4 views
0

Ich möchte diejenigen Knoten, deren Namen nicht in der Sammlung von a_row + b_row sind. Zum Beispiel: a_row ist mit b,c und nach b_row mit a_row jetzt b_row Kombinieren mit b,c,e und entity.name ist mit a,b,c,d. Also ich will die Ausgabe a,d in Form von Knoten nicht in der Listenform.Get Nodes, die nicht sammeln

match (a)-[r:relations]->(b) with collect(distinct a.FirstName) as a_row 
match (a)-[r:relations]->(b) with a_row + collect(distinct b.LastName) as b_row 
match (n:entity) with b_row where n.name <> b_row return n 

Vielen Dank im Voraus, lassen Sie mich wissen, wenn weitere Informationen benötigt werden.

Antwort

0

Versuchen Sie, die <> von IN operator zu ändern. Auf diese Weise:

match (a)-[r:relations]->(b) with collect(distinct a.FirstName) as a_row 
match (a)-[r:relations]->(b) with a_row + collect(distinct b.LastName) as b_row 
match (n:entity) where n.name NOT IN b_row return n 
+0

Nein, das wird nicht funktionieren. Vielen Dank! – Tg0206

0

Erste

match (a)-[r:relations]->(b) with collect(distinct a.FirstName) as a_row 
match (a)-[r:relations]->(b) with a_row + collect(distinct b.LastName) as b_row 
match (n:entity) with b_row where n.name <> b_row return n 

ist ungültig, weil der letzte with n fällt, und kann auf

MATCH (a)-[r:relations]->(b) 
WITH collect(distinct a.FirstName)+collect(distinct b.LastName) as b_row 
MATCH (n:entity) 
// b_row in now a list, so if n.name is a string, <> is always false 
WHERE n.name NOT IN b_row 
RETURN n 

vereinfacht werden, die ich

MATCH (a)-[r:relations]->(b) 
WITH collect(distinct a.FirstName)+collect(distinct b.LastName) as b_row 
MATCH (n:entity) 
RETURN n, b_row 
vereinfachen würde

Zuerst zu vergewissern Sie sich, dass Ihre Abfrage die vor dem Filtern gefundenen Daten erfasst.

+0

Danke @Tezra! Endlich kann ich herausfinden, was mein Problem war. Ich sammelte das Ergebnis in der anderen sammeln, so dass der ** nicht in ** Zustand nicht funktionierte. – Tg0206