Cypher LinkedList Сопоставление по индексу, но «не знаю, как это сравнить».
У меня проблемы с MATCH по индексу, и я надеюсь, что вы можете помочь. Связанное обсуждение можно найти в этом посте:Cypher Linked LIst: как отменить и заменить на индекс
Сначала я запускаю следующий необращенный запрос три раза, чтобы заполнить связанный список связями и узлами.
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
После слов я могу получить выходные данные с помощью этого запроса, чтобы я мог видеть, что у меня есть три элемента в моем массиве связанных списков под меткой отношения 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
Затем я пытаюсь запросить первый индекс с этим запросом шифра
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Но я подхожу с ошибкой ниже:
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)
Я попытался получить с этим запросом:
MATCH (p { id:"123A" })
MATCH (p)-[:Foo*2]->(c)
RETURN c
и это выход, который возвращается
id 789C // which is index 1
У меня также есть небольшая путаница относительно того, должен ли индекс 1 извлекаться с целым числом 0 или 1 или 2, но эта путаница, я уверен, может быть улажена, как только я получу это «Не знаю, как это сравнить». ошибка. Пожалуйста, помогите мне с рекомендациями относительно правильного способа эффективного извлечения по индексу и избежания ошибки, которую я перечислил выше.
Я очень благодарен за вашу помощь
** НОТА **
Прочитав ответ cybersam, я выполнил следующие тесты для упомянутой выше структуры связанного списка, которая содержит три элемента
Этот запрос возвращает дочерний элемент в позиции индекса 0:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*0]->()-[r:Foo]->(c)
RETURN c
Этот запрос возвращает дочерний элемент в позиции индекса 1:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo]->()-[r:Foo]->(c)
RETURN c
Этот запрос возвращает «Не знаю, как это сравнить». ошибка
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*1]->()-[r:Foo]->(c)
RETURN c
Этот запрос возвращает дочерний элемент в позиции индекса 2:
MATCH (p { id:'123A' })
MATCH (p)-[:Foo*2]->()-[r:Foo]->(c)
RETURN c
Я предполагаю, что этот последний работает для чего-либо> = 2