Я хочу, чтобы Люди, которые знают всех, были в группе людей, которые знают определенные места.Это:
MATCH (:Place {name:'Breiter Weg'})<-[:knows]-(b:Person)-[:knows]->(:Place {name:'Buchhandel'})
WITH collect(DISTINCT b) as persons
Match (a:Person)
WHERE ALL(b in persons WHERE (a)-[:knows]->(b))
RETURN a
работает, но для второй части выполняется полное сканирование узла перед применением предложения where, которое является чрезвычайно медленным - для большей базы данных это занимает 8 ~ 9 секунд.Я также попробовал это:
MATCH (:Place {name:'Breiter Weg'})<-[:knows]-(b:Person)-[:knows]->(:Place {name:'Buchhandel'})
Match (a:Person)-[:knows]->(b)
RETURN a
Для этого нужны только 2 мс, однако он возвращает всех людей, которые знают кого-либо из группы b, а не тех, кто знает всех.
Итак, мой вопрос: существует ли эффективный / быстрый запрос, чтобы получить то, что я хочу?