Cypher LinkedList Match por índice pero "No sé cómo comparar eso".
Tengo problemas con MATCH por índice y espero que puedan ayudar. La discusión relacionada se puede encontrar en esta publicación:Cypher Linked LIst: cómo deseleccionar y reemplazar por índice
Primero ejecuto la siguiente consulta sin desplazamiento tres veces para completar la lista vinculada con relaciones y nodos
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 Puedo obtener el resultado con esta consulta para que pueda ver que tengo tres elementos en mi matriz de listas vinculadas bajo la etiqueta de relación Foo
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
Luego trato de consultar el primer índice con esta consulta cifrada
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Pero se me ocurre el siguiente error:
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)
Intenté buscar con esta consulta:
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*2]->(c)
RETURN c
y esta es la salida que vuelve
id 789C // which is index 1
También tengo una ligera confusión sobre si el índice 1 debe buscarse con el entero 0 o 1 o 2, pero estoy seguro de que esa confusión se puede resolver una vez que pase este 'No sé cómo comparar eso'. error. Por favor, ayúdeme con orientación sobre la forma correcta de buscar eficazmente por índice y evitar el error que enumeré anteriormente.
Estoy muy agradecido por tu ayuda
** NOTA **
Después de leer la respuesta del ciberesam, he realizado las siguientes pruebas en la estructura de la lista vinculada mencionada anteriormente que contiene tres elementos
Esta consulta devuelve el elemento secundario en la posición de índice 0:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*0]->()-[r:Foo]->(c)
RETURN c
Esta consulta devuelve el elemento secundario en la posición del índice 1:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo]->()-[r:Foo]->(c)
RETURN c
Esta consulta devuelve el mensaje "No sé cómo comparar eso". error
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Esta consulta devuelve el elemento secundario en la posición del índice 2:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*2]->()-[r:Foo]->(c)
RETURN c
Supongo que este último funciona para cualquier cosa> = 2