#neo4j #cypher
Вопрос:
Мы обновляем данные в базе данных, и для некоторых узлов из-за устаревших данных мы можем найти свойство в виде строки или списка. Я хотел бы преобразовать строки в пустой список и сохранить списки как есть. Я пробовал что-то подобное :
СОВПАДЕНИЕ (a:часть) ГДЕ НЕ СУЩЕСТВУЕТ((a.сериалы)[0]) УСТАНОВИТЕ a.сериалы=[] верните a
но это просто выдает ошибку.
есть идеи?
Ответ №1:
У Cypher нет встроенной функции для этого , но вы можете использовать небольшой хак, который проверяет, увеличит ли добавление элемента в свойство его размер на 1, например
MATCH (n:Award)
RETURN size(n.years 11) = size(n.years) 1 AS isList
подписывайте, добавляйте элементы, объединяйте или суммируйте. Поэтому, чтобы отличить строку a от массива, нам нужно добавить две цифры.
Комментарии:
1. Почти приехали ! Но очень интересный трюк ! СОВПАДЕНИЕ (n:Награда) РАЗМЕР ВОЗВРАТА(n.лет 11) = размер(n.лет) 1 В списке
Ответ №2:
Вам нужно будет использовать библиотеку APOC для проверки типа свойства:
MATCH (a:part)
WHERE NOT apoc.meta.isType(a.serials) = "LIST"
SET a.serials=[]
return a
Вы можете проверить документы для получения дополнительной информации: https://neo4j.com/labs/apoc/4.1/overview/apoc.meta/apoc.meta.isType/
Комментарии:
1. мы искали что-то без APOC, но я не думаю, что мы что-нибудь получим. Поэтому я проверяю это как правильный ответ !