Я пытаюсь получить узлы, имеющие определенные значения свойств для любого имени свойства (ключа) и не имеющие каких-либо других значений для какого-либо свойства.
Короче говоря, псевдогугловский запрос будет выглядеть так:
+Tom +val1 +val2 (...) -Cruise -valX -valY (...)
и запрос Cypher будут выглядеть так:
MATCH (n) WHERE (
ANY ( p in KEYS(n) WHERE n[p] CONTAINS 'Tom' ) AND
NONE ( p in KEYS(n) WHERE n[p] CONTAINS 'Cruise')
)
RETURN n
Но результат теста с базой данных фильмов (: график воспроизведения фильма) был просто пустым списком, в то время как есть другие актеры с именем 'Том в базе данных, например Том Хэнкс.(match (n) где (any (p в KEYS (n), ГДЕ n [p] содержит 'Tom')) return n дает [Tom Tykwer, Tom Hanks, Tom Cruise, Tom Skerritt])
ИтакЯ экспериментировал с «ом» вместо «Том», и на этот раз результатом является неполный список «ом»:
match (n) where (
any( p in KEYS(n) WHERE n[p] contains 'om') and
none( p in Keys(n) WHERE n[p] contains 'Cruise')
)
return n
дает
[Romantic (genre), Naomie Harris, James Thompson, Jessica Thompson]
(No Tom's -- why?)
Также пробовал НЕ ЛЮБОЙ () вместо NONE () и имели те же результаты.
Откуда возникает это несоответствие?