每轮游戏中的一个节点都与答案节点相连。
(圆)& lt; - [: IN_ROUND](回答):
预计每轮有5个或更少的答案与它相关,我怀疑我的数据库中存在比这更多的节点,我如何查询此信息?返回超过5个<-[:IN_ROUND]-关系的所有:Round节点?
您可以使用WITH子句计算连接节点的数量,然后根据该计数进行筛选。
如果您希望将传入连接指定为Round
MATCH (rnd:Round)<-[:IN_ROUND]-(a)
WITH rnd, count(a) as incomingNodes
WHERE incomingNodes>5
RETRUN rnd
如果你想同时计算传入和传出的连接:
MATCH (rnd:Round)-[:IN_ROUND]-(a)
WITH rnd, count(a) as connectedNodes
WHERE connectedNodes>5
RETRUN rnd
你可以这样写:
MATCH (n:Round)<-[:IN_ROUND]-(:Answer)
WHERE size((n)<-[:IN_ROUND]-(:Answer)) > 5
RETURN distinct(n)
您可以看到它在这个示例数据上起作用:
MERGE (a:Round{key: 1})
MERGE (b:Round{key: 2})
MERGE (c:Answer{key: 3})
MERGE (d:Answer{key: 4})
MERGE (e:Answer{key: 5})
MERGE (f:Answer{key: 6})
MERGE (g:Answer{key: 7})
MERGE (h:Answer{key: 8})
MERGE (i:Answer{key: 9})
MERGE (c)-[:IN_ROUND{key:1}]-(a)
MERGE (d)-[:IN_ROUND{key:1}]-(a)
MERGE (e)-[:IN_ROUND{key:1}]-(a)
MERGE (f)-[:IN_ROUND{key:1}]-(a)
MERGE (g)-[:IN_ROUND{key:1}]-(a)
MERGE (h)-[:IN_ROUND{key:1}]-(a)
MERGE (i)-[:IN_ROUND{key:1}]-(b)
MERGE (c)-[:IN_ROUND{key:1}]-(b)
MERGE (e)-[:IN_ROUND{key:1}]-(b)
MERGE (f)-[:IN_ROUND{key:1}]-(b)
MERGE (g)-[:IN_ROUND{key:1}]-(b)
返回:
╒═════════╕
│"n" │
╞═════════╡
│{"key":1}│
└─────────┘