我正在查询存储建筑物底层的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
Run Code Online (Sandbox Code Playgroud)
现在,这将返回所有具有与约束对应的子图的图.我想以某种方式限制结果图所具有的节点数,因此对于给定的示例,我想仅获得具有正好3个节点的图,所有类型都是ROOM.
在Cypher有办法做到这一点吗?
编辑:这样的东西不起作用:
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
Run Code Online (Sandbox Code Playgroud)
最终解决我的问题的是:
MATCH (s:STOREYVERTEX) <-- (rooms)
WITH s, count(distinct(rooms)) as numberOfRooms
WHERE numberOfRooms = 3
MATCH (s) <-- (room1: KITCHEN)
MATCH (s) <-- (room2: DINING)
RETURN s
Run Code Online (Sandbox Code Playgroud)