Я пытаюсь выполнить NOT relation
запрос, но условие просто не применяется. Что я здесь не так делаю?
Запрос, который я пробовал:
MATCH (blog:Blog), (user:User{id:3})-[:FOLLOWS]->(otherUser:User)
WHERE NOT ((otherUser)-[:OWNS]->(blog))
RETURN blog
Запрос должен вернуться — все блоги, которые не принадлежат моим друзьям. Мой идентификатор 3.
Поэтому все блоги, принадлежащие другим пользователям, должны быть возвращены.
Вы распределяете кросс-продукт между всеми блогами и всеми друзьями пользователя.
Но условие проверяется только для каждой пары.
Вы, вероятно, хотите это:
MATCH (user:User{id:3})
MATCH (blog:Blog)
WHERE NOT ((user)-[:FOLLOWS]->()-[:OWNS]->(blog))
RETURN blog
или это
MATCH (user:User{id:3})-[:FOLLOWS]->(otherUser:User)
WITH collect(otherUser) as friends
MATCH (otherUser)-[:OWNS]->(blog:Blog)
WHERE NOT otherUser IN friends
RETURN blog
Других решений пока нет …