Ein Benutzer übergibt mir ein Array von UUID, die auf Knoten in meiner Datenbank verweisen. Ich möchte ihren USER-Knoten mit jedem dieser anderen Knoten in Verbindung bringen. Die Herausforderung ist, ich möchte die Reihenfolge wissen, in der die UUIDs mir gegeben wurden.Inkrementieren eines Werts in Neo4j-Abfrage
Wenn also die UUIDs sind: [AAA, CCC, BBB], ich will wie etwas auszuführen:
(user)-[:REL {order: 1}]->(:THING {name:"AAA"})
(user)-[:REL {order: 2}]->(:THING {name:"CCC"})
(user)-[:REL {order: 3}]->(:THING {name:"BBB"})
Natürlich, ich will nicht, dass es in mehreren Anweisungen tun. Ich möchte diese Liste als Parameter übergeben.
MATCH(u:USER {id:{id}})
MATCH(t:THING) where t.name in {that_list}
CREATE (u)-[:REL {order: ???}]->(t)
Beachten Sie die ???
. Das ist der Kernpunkt.
Wie kann dies erreicht werden? Ich habe es Tests mit einer Schleife bestanden, aber ich denke, ich sollte in der Lage sein, dies zu tun.
Ich kenne Ihre Anwendungsfälle nicht, aber haben Sie darüber nachgedacht, die 'THING'-Knoten in der richtigen Reihenfolge zu verketten, so dass Sie nicht die' order'-Eigenschaften haben müssen? So: '(Benutzer) - [: REL] -> (: THING {Name:" AAA "}) - [: REL] -> (: THING {Name:" BBB "}) - [: REL] -> (: DING {Name: "CCC"}) '? – cybersam
@cybersam das ist sehr schlau. Ich bin mir nicht sicher, ob ich das in meinem Fall kann, aber es ist sehr graphisch. Ich mag das. –