2015-12-30 3 views
1

Можно ли удалить метки с узла с помощью коллекции? Что-то вроде следующего, что не работает, я предполагаю, потому что он пытается удалить метку «remove_labels» вместо того, чтобы использовать это как набор меток для удаления.Удалить метки узла Neo4J с помощью коллекции?

Предположим, что все узлы с меткой «label_3» также имеют метки «label_1» и «label_2».

WITH ["label_1", "label_2"] as keep_labels 
MATCH (n:label_3 {id: 5}) 
WITH filter(label IN labels(n) WHERE label NOT(IN keep_labels)) AS remove_labels 
MERGE (n:label_3 {id: 5}) 
REMOVE n:remove_labels 
RETURN n 

--- EDIT ---
Fixed недействителен 'CG' ссылка, которая была ошибка копипаст. Также добавлена ​​явная коллекция keep_labels, хотя в моем запросе будет параметр.

+0

Что такое 'cg'? В этом запросе должна появиться ошибка, указывающая, что 'cg' не определен. То же самое для 'keep_labels'. –

+0

Извините, одна из них была ошибкой копирования-вставки, а другая была просто подразумеваемым параметром. Я отредактировал вопрос – shadfc

ответ

2

Задание ярлыков динамически в Cypher в настоящее время не поддерживается. Вам придется обрабатывать это в клиентском коде и строить строку запроса Cypher, явно указывая метку.

+0

Спасибо за ответ. Любая идея, если она находится в дорожной карте? – shadfc

+2

Не то, чтобы я знал. Для Github есть функция запроса такого поведения, если вы хотите отслеживать его: https://github.com/neo4j/neo4j/issues/1809 –

Смежные вопросы