Скажем, у нас есть некоторые данные, подобные этим:
create
(a:Person{name:'andy'})-[:LIKES]->(:Animal{name:'cat'}),
(b:Person{name:'bob'})-[:LIKES]->(:Animal{name:'cat'}),
(c:Person{name:'charlie'})-[:LIKES]->(:Animal{name:'cat'}),
(a)-[:LIKES]->(:Animal{name:'dog'}),
(b)-[:LIKES]->(:Animal{name:'dog'})
Я хотел бы знать, у какого Персона есть идентичные НРАВИТСЯ с Энди. Энди нравится «кошка» и «собака», поэтому должен появиться Боб, но не Чарли, потому что ему не нравится «собака».
Как я могу сформировать такой запрос? Мне бы хотелось, чтобы этот запрос работал со многими LIKES, поэтому в будущем, когда будет 100 животных, я все равно смогу найти кого-то с таким же вкусом, как у Энди.
Я пробовал что-то подобное
match
(p:Person{name:'andy'})-[:LIKES]->(a:Animal),
(a)<-[:LIKES]-(p2:Person)
return p,a,p2
Но это вернул бы и Чарли.