Cypher LinkedList Entspricht dem Index, aber "Weiß nicht, wie man das vergleicht." Stattdessen
Ich habe Probleme mit MATCH nach Index und hoffe, dass Sie helfen können. Eine entsprechende Diskussion finden Sie in diesem Beitrag:Cypher Linked LIst: Wie man die Verschiebung aufhebt und durch den Index ersetzt
Zunächst führe ich die folgende nicht verschobene Abfrage dreimal aus, um die verknüpfte Liste mit Beziehungen und Knoten zu füllen.
MATCH (p {id: '123A'})
OPTIONAL MATCH (p)-[r:Foo]->(c)
WITH p, r, COLLECT(c) AS cs
MERGE (cNew {
id:'456B' // and '789C' and 'WXYZ'
})
CREATE (p)-[rNew:Foo {
isFavorite:false,
isOpen:false,
currenttab:'all',
currentdate:2015-10-30T07:00:00.000Z
}]->(cNew)
FOREACH (x IN cs |
CREATE (cNew)-[:Foo {
isFavorite:r.isFavorite,
isOpen:r.isOpen,
currenttab:r.currenttab,
currentdate:r.currentdate
}]->(x)
DELETE r)
RETURN p, rNew, cNew
Afterwords Ich kann die Ausgabe mit dieser Abfrage abrufen, damit ich sehe, dass ich drei Elemente in meinem Linked-List-Array unter der Beziehungsbezeichnung Foo @ hab
MATCH ()-[r:`language-arts_ALLRESOURCES`]->() RETURN r
isFavorite false
isOpen false
currenttab all
currentdate 2015-10-30T07:00:00.000Z
isFavorite false
isOpen false
currenttab all
currentdate 2015-10-30T07:00:00.000Z
isFavorite false
isOpen false
currenttab all
currentdate 2015-10-30T07:00:00.000Z
Ich versuche dann, den ersten Index mit dieser Verschlüsselungsabfrage abzufragen
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Aber ich komme mit dem Fehler unten auf:
Don't know how to compare that. Left: [:Foo[8258]
{isFavorite:false,isOpen:false,currenttab:"all",currentdate:"2015-10-
30T07:00:00.000Z"}] ($colon$colon); Right: :Foo[8260]
{isFavorite:false,isOpen:false,currenttab:"all",currentdate:"2015-10-
30T07:00:00.000Z"} (RelationshipProxy)
Ich habe versucht, mit dieser Abfrage abzurufen:
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*2]->(c)
RETURN c
und dies ist die Ausgabe, die zurückkommt
id 789C // which is index 1
Ich habe auch einige leichte Unklarheiten, ob Index 1 mit der Ganzzahl 0 oder 1 oder 2 abgerufen werden soll, aber diese Unklarheit kann, wie ich sicher bin, aussortiert werden, sobald ich die folgende Meldung erhalte: "Weiß nicht, wie ich das vergleichen soll." Error. Bitte helfen Sie mir bei der Suche nach dem richtigen Weg zum effektiven Abrufen nach Index und vermeiden Sie den oben aufgeführten Fehler.
Ich bin sehr dankbar für Ihre Hilfe
** HINWEIS *
Nachdem ich die Antwort von Cybersam gelesen habe, habe ich die folgenden Tests für die oben erwähnte verknüpfte Listenstruktur ausgeführt, die drei Elemente enthält
Diese Abfrage gibt das untergeordnete Element an der Indexposition 0 zurück:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*0]->()-[r:Foo]->(c)
RETURN c
Diese Abfrage gibt das untergeordnete Element an der Indexposition 1 zurück:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo]->()-[r:Foo]->(c)
RETURN c
Diese Abfrage gibt "Ich weiß nicht, wie ich das vergleichen soll" zurück. Erro
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Diese Abfrage gibt das untergeordnete Element an der Position von Index 2 zurück:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*2]->()-[r:Foo]->(c)
RETURN c
Ich gehe davon aus, dass dieser letzte für alles funktioniert> = 2