Neo4j Cypher UNWIND ключи - PullRequest
       8

Neo4j Cypher UNWIND ключи

0 голосов
/ 04 мая 2018

Я пытаюсь создать следующий запрос:

MATCH (v:Value) 
WHERE v.id = {valueId} 
UNWIND keys(v) AS key 
WITH v, key 
WHERE key CONTAINS 'property.' 
REMOVE key

, но сейчас он не работает со следующей ошибкой:

org.neo4j.driver.v1.exceptions.ClientException: Unexpected end of input: expected an identifier character, whitespace, node labels, '{', a property map, a relationship pattern, '.' or '(' (line 1, column 122 (offset: 121))
"MATCH (v:Value) WHERE v.id = {valueId} WITH v UNWIND keys(v) AS key WITH v, key WHERE key CONTAINS 'property.' REMOVE key"
                                                                                                                         ^ 

Что не так с этим запросом и как его исправить?

1 Ответ

0 голосов
/ 04 мая 2018

Проблема заключается не в том, что UNWIND на ключах, а в том, что вы указываете удалить что-то не на графическом объекте.

В идеале это должно было бы стать:

MATCH (v:Value) 
WHERE v.id = {valueId} 
UNWIND keys(v) AS key 
WITH v, key 
WHERE key CONTAINS 'property.' 
REMOVE v.key

К сожалению, это не работает, так как ключ свойства не может быть переменным.

Обходной путь с APOC - установить очищенную карту на узле:

MATCH (v:Value) 
WHERE v.id = {valueId} 
SET v = apoc.map.clean(properties(v), filter(x IN keys(v) WHERE x CONTAINS 'property.'), [])
RETURN v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...