У меня возникли проблемы с возвратом узлов, которые не имеют отношения к определенному свойству.Почему в моем запросе не работает функция Neo4j None?
Вот запрос, чтобы построить график для сценария:
create ({Name:'Foo1'})-[:T]->({Name:'Bar'})<-[:T{Inactive:true}]-({Name:'Foo2'})<-[:T]-({Name:'Foo3'})
Теперь, чтобы указать желаемый результат больше: Я хочу, чтобы получить все узлы, которые каким-то образом связанные с «Бар». Поэтому из графика, созданного с помощью запроса выше, я ожидаю получить Foo1 и Foo3.
У меня возникли проблемы при получении узлов, которые делают НЕ имеют отношения с «неактивный» собственности, используя следующий запрос:
match (bar)<-[rs*]-(foo) where ID(bar)= **BAR_ID**
optional match (foo)-[r]->() where r in rs
with foo, collect(distinct r) as relationships
where none(rel in relationships where rel.Inactive = true)
return foo
Теперь вы можете заметить, запрос будет немного феерия со вторым где условие. Это часть другого решения другой проблемы, поэтому, пожалуйста, не сосредотачивайтесь на этой части, если она не является частью моей проблемы. Я заинтересован в том, почему запрос ничего не возвращает. Кажется, что предикат функции none() работает неправильно. Тем более, что не заменяя ни() с любого() будет возвращать только Foo2, как ожидается, как так:
match (bar)<-[rs*]-(foo) where ID(bar)= **BAR_ID**
optional match (foo)-[r]->() where r in rs
with foo, collect(distinct r) as relationships
where any(rel in relationships where rel.Inactive = true)
return foo
Итак, опять же, возникает вопрос, почему запрос, который использует NONE() функция ISN Я ничего не возвращаю. Сначала я подумал, что это может иметь какое-то отношение к некоторым отношениям, не имеющим свойство «Неактивное», но docs, они говорят вам, что недостающие свойства оцениваются как ложные (поскольку это значение равно null). По крайней мере, это моя интерпретация, которая может быть ошибочной, конечно.
Я не заинтересован в решении проблемы, так как я уже написал другой запрос, который возвращает Foo1 и Foo3. Мне интересно узнать, почему этот вопрос не работает.