Чтобы визуализировать все узлы Female
, просто запустите в браузере neo4j:
MATCH (n:User)
WHERE n.gender = 'Female'
RETURN n;
Нет необходимости избыточно соединять все Female
узлы вместе.
Как правило, этот тип запроса будет выполняться быстрее, если вы также создадите соответствующий index . Например:
CREATE INDEX ON :User(gender);
[ОБНОВЛЕНИЕ 1]
Если вы хотите видеть каждую женщину User
, которая является членом всех клубов, тогда вы можете иметь MEMBER_OF_CLUB
отношения между User
s и Club
s и соответственно изменить запрос:
MATCH (c:Club)
WITH COUNT(c) AS clubCount
MATCH (n:User)
WHERE n.gender = 'Female' AND SIZE((n)-[:MEMBER_OF_CLUB]->()) = clubCount
RETURN n;
В этом запросе используется эффективная операция degreeness для проверки того, что число клубов, к которым принадлежит User
, равно общему количеству клубов.
[ОБНОВЛЕНИЕ 2]
Чтобы увидеть всех женщин-членов каждого клуба (в котором есть женщины), просто используйте функцию агрегирования COLLECT
:
MATCH (n:User)-[:MEMBER_OF_CLUB]->(club:Club)
WHERE n.gender = 'Female'
RETURN club, COLLECT(n) AS female_members;
[ОБНОВЛЕНИЕ 3]
Если вы действительно хотите, чтобы каждый узел User
содержал список названий клубов (вместо наличия Club
узлов и MEMBER_OF_CLUB
отношений), это должно работать:
MATCH (n:User)
WHERE n.gender = 'Female'
UNWIND n.clubs AS club
RETURN club, COLLECT(n) AS female_members;