Występuje UnknownError
, gdy używam EXISTS {...}
w połączeniu z OR
w klauzuli WHERE
. Czy to jest błąd lub jestem czymś?
Utwórz przykładowe węzły
CREATE (a:A { uuid:'uuid1', foo:true })-[:KNOWS]->(b:B { uuid:'uuid2' })
Przykładowe zapytanie
MATCH (a:A { uuid:'uuid1' }),
(b:B { uuid:'uuid2' })
WHERE a.foo = TRUE
OR EXISTS {
MATCH (a)-[:KNOWS]->(b)
}
RETURN a
Błąd
Neo.DatabaseError.General.UnknownError
There should be at least one pattern expression
2 odpowiedzi
Jak wskazuje @inversefalcon, wydaje się, że jest to błąd (lub przynajmniej nieudokumentowany Podzśniory egzystencjalne Ograniczenie).
Jako obejście, ponieważ twoje podzapytanie nie ma klauzuli WHERE
, możesz po prostu użyć Istnieje funkcję:
MATCH (a:A {uuid: 'uuid1'}), (b:B {uuid: 'uuid2'})
WHERE a.foo OR EXISTS((a)-[:KNOWS]->(b))
RETURN a
Było to rzeczywiście błąd / nadzór w istotnej implementacji subquery Neo4j. Teraz wdrożyłem poprawkę Rozwiąż błąd z subquestialami egzystencjalnymi i lub, które zostaną uwzględnione Nadchodzące wydanie 4.0.
Podobne pytania
Nowe pytania
neo4j
Neo4j to graficzna baza danych typu open source (GDB) dobrze dostosowana do połączonych danych. Przy zadawaniu pytań podaj dokładną wersję Neo4j. Możesz go używać do silników rekomendacji, wykrywania oszustw, wyszukiwania opartego na grafach, operacji / bezpieczeństwa sieci i wielu innych przypadków użytkowników. Dostęp do bazy danych uzyskuje się za pośrednictwem oficjalnych sterowników w językach Java, JavaScript, Python i .NET lub sterowników udostępnionych przez społeczność w językach PHP, Ruby, R, Golang, Elixir, Swift i nie tylko.