github.com/neo4j/neo4j/issues/11542
я есть этот пример данных
С примером запроса
CREATE (a1:A {title: "a1"})
CREATE (a2:A {title: "a2"})
CREATE (a3:A {title: "a3"})
CREATE (b1:B {title: "b1"})
CREATE (b2:B {title: "b2"})
MATCH (a:A {title: "a1"}), (b:B {title: "b1"})
CREATE (a)-[r:LINKS]->(b)
MATCH (a:A), (b:B) return a,b
Чего я пытаюсь достичь:
Найти все узлы типа A, которые не связаны с узлом типа B (ans: a2, a3)Найти все узлы типа B, которые не связаны с узлом типа A (ans: b2)Ожидается, что оба эти требования будут двунаправленными и будут иметь одинаковый шаблон запроса.Где я достиг
Получить все А, не подключенные к В: получает меня a2 и a3, как ожидалось
MATCH path=(a:A)-[r]-(b:B)
WHERE (a)-[r]-(b)
WITH collect(a) as al
MATCH (c:A)
WHERE not c IN al
RETURN c
Получите все отключенные B, я получаю оба b1 и b2, что неверно, и печать "al" показала, что список пуст
MATCH path=(b:B)-[r]-(a:A)
WHERE (b)-[r]-(a)
WITH collect(b) as al
MATCH (c:B)
WHERE not c IN al
RETURN c
кое как
WHERE (b)-[r]-(a) **!=** WHERE (a)-[r]-(b)
даже если у меня есть направление как двунаправленное (не упомянуто)
Если я изменю это наWHERE (a)-[r]-(b)
во втором запросе это работает, но я хочу общий двунаправленный запрос.