2017-05-04 3 views
1

ich folgende Chiffre Abfrage haben -Wie COUNT passieren

MATCH(from: GContact) 
WHERE NOT from:migrationComplete 
WITH from 
LIMIT 10 
SET from:migrationComplete 
WITH from, COUNT(from) AS booleanCount 
MATCH (from)-[r:has]->(to: GEmail) 
WITH from, to, booleanCount 
MERGE (from)-[r:contactHasEmail]->(to) 
RETURN booleanCount 

Ich möchte, dass die Abfrage die Anzahl der from nach SET gefunden zurückzukehren, die <=10 wäre.

Die Abfrage gibt jedoch die Anzahl der Übereinstimmungen in MATCH (from)-[r:has]->(to: GEmail) zurück. Gibt es eine Möglichkeit, die ursprüngliche Zählung vollständig durchzugeben und zurückzugeben?

Antwort

0

Sie können den aggregierten und nicht aggregierten Wert nicht als allgemeine Tatsache zurückgeben.

Aber man kann wieder aggregieren und verteilen mit collect:

MATCH(from: GContact) 
WHERE NOT from:migrationComplete 
WITH from 
LIMIT 10 
SET from:migrationComplete 
WITH COLLECT(from) AS nodes 
UNWIND nodes as from 
WITH from, size(nodes) AS booleanCount 
MATCH (from)-[r:has]->(to: GEmail) 
WITH from, to, booleanCount 
MERGE (from)-[r:contactHasEmail]->(to) 
RETURN booleanCount 

Sie könnten auch nur am Ende Verwendung RETURN count(distinct from) as booleanCount

+0

Scheint nicht wie die Abfrage keine Datensätze zurückgibt. Es scheint auch, dass die neuen Beziehungen nicht erstellt werden. – Siddharth