2017-07-09 2 views
1

Versuchen, eine UNWIND-Abfrage zum Parsen einer Liste zu erstellen. Die MATCH-Abfrage wird für jede Zeile in unserer Liste ausgeführt. Gibt es eine Möglichkeit, die MATCH-Abfrage nur einmal auszuführen und danach den Wert für jede Zeile zu verwenden? Wir haben DISTINCT versucht, sind aber gescheitert.Neo4j mit UNWIND mit MATCH Leistung

UNWIND ${PACBatch} AS row 
MATCH (e:Business {serial_number: row.ownerID}) 
CREATE (p:Person {serial_number: row.tempSerial, created: 
row.rowCreated}) 
CREATE (e)-[r:SELLS_ITEM {created: row.rowUpdated}]->(p) 
RETURN p AS PER, r AS OWNS 

Antwort

2

Ist etwas wie das, was Sie im Sinn hatten?

Es wird davon ausgegangen, dass Sie ein einzelnes Geschäft haben. Wenn das Geschäft pro Reihe variiert, wäre es schwieriger etwas zu kochen.

// match the business node 
MATCH (e:Business {serial_number: a_particular_ownerID }) 
WITH e 

// then bring the business node forward and process each row in the UNWIND 
UNWIND ${PACBatch} AS row 
CREATE (p:Person {serial_number: row.tempSerial, created: row.rowCreated}) 
CREATE (e)-[r:SELLS_ITEM {created: row.rowUpdated}]->(p) 
RETURN p AS PER, r AS OWNS 
+0

Das funktioniert, danke. – Kainan