Я запрашиваю базу данных Neo4j, в которой хранятся строительные плиты. Пример запроса:Ограничение количества узлов
MATCH (s:STOREYVERTEX) <-- (room0: LIVING)
MATCH (s) <-- (room1: DINING)
MATCH (s) <-- (room2: KITCHEN)
MATCH (room0) - [edge0: DOOR] -> (room2)
MATCH (room2) - [edge1: DOOR] -> (room1)
RETURN s
Теперь это возвращает все графики, которые имеют подграф, соответствующий ограничениям. Я хотел бы как-то ограничить количество узлов, которые имеет граф результатов, поэтому для данного примера я хотел бы получить только графики, которые имеют ровно 3 узла, все типа ROOM.
Есть ли способ сделать это в Cypher?
Edit: Что-то вроде этого не работает:
MATCH (s:STOREYVERTEX) <-- (rooms:ROOM)
WITH s, count(distinct(rooms)) as numberOfRooms
WHERE numberOfRooms = 3
MATCH (s) <-- (room1: DINING)
MATCH (s) <-- (room2: KITCHEN)
MATCH (room0) - [edge0: DOOR] -> (room2)
MATCH (room2) - [edge1: DOOR] -> (room1)
RETURN s
пожалуйста, попробуйте использовать семантически значимые отношения-типы в запросе. –
Теперь все в порядке? – Banana