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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage