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
1
2um9YJ6haZ7wKP4m 14 marzec 2020, 03:47

2 odpowiedzi

Najlepsza odpowiedź

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
0
cybersam 14 marzec 2020, 02:15

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.

0
Issam El-atif 27 marzec 2020, 09:17