Ich habe eine Datenbank, in der ich Entity-Knoten, Benutzerknoten und einige Beziehungen einschließlich LIKES, POSTED_BY habe. Ich versuche, eine Abfrage zu schreiben, dieses Ziel zu erreichen:Cypher COLLECT-Klausel, um eine Liste zu erstellen, in der einige Listen leer sein könnten
alle Entity Knoten finden, dass ein bestimmter Benutzer LIKES oder solche, die POSTED_BY gewesen sein, dass Benutzer
Bitte beachte, dass ich meine Abfrage vereinfacht - in Echt Ich habe eine Reihe anderer Bedingungen ähnlich wie oben.
Ich versuche eine COLLECT-Klausel zu verwenden, um die Liste aller Entity-Knoten zu aggregieren und Zeile für Zeile darauf aufzubauen.
MATCH (e)<-[:LIKES]-(me:User{id: 'rJVbpcqzf'})
WITH me, COLLECT(e) AS all_entities
MATCH (e)-[:POSTED_BY]->(me)
WITH me, all_entities + COLLECT(e) AS all_entities
UNWIND all_entities AS e
WITH DISTINCT e
RETURN e;
Dies scheint nur die korrekte Liste zurückkehren zu werden, wenn es mindestens eine Entität ist, dass der Benutzer (das heißt, wenn die erste kehrt COLLECT eine nicht-leere Liste) gefallen hat. Wenn es jedoch keine Entität gibt, die mir gefallen hat, wird die gesamte Abfrage leer zurückgegeben.
Irgendwelche Vorschläge, was mir hier fehlt?