neo4j 用cypher语句找到 与numberA 在关系r1,r2,r3上出度节点一样的 numberB
时间: 2023-12-14 07:36:06 浏览: 68
可以使用以下 Cypher 查询语句来找到与 `numberA` 在关系 `r1`, `r2`, `r3` 上出度节点一样的 `numberB`:
```
MATCH (:Node {number: $numberA})-[r1|r2|r3]->(a)
WITH count(a) AS outDegree
MATCH (b)-[r1|r2|r3]->()
WHERE b.number <> $numberA
WITH b, count(DISTINCT r1) + count(DISTINCT r2) + count(DISTINCT r3) AS bOutDegree, outDegree
WHERE bOutDegree = outDegree
RETURN b.number
```
其中 `$numberA` 是占位符,需要替换为实际的节点编号。这个查询语句的大致思路是:
1. 找到 `numberA` 的所有出度节点,并计算出度节点的数量 `outDegree`。
2. 找到所有与 `numberA` 有关系 `r1`, `r2`, `r3` 的节点 `b`。
3. 计算节点 `b` 的出度节点数量 `bOutDegree`。
4. 如果 `bOutDegree` 等于 `outDegree`,则说明 `b` 与 `numberA` 在关系 `r1`, `r2`, `r3` 上出度节点一样,将 `b.number` 返回。
注意,这个查询语句中使用了 Cypher 的一些高级特性,包括 `WITH` 子句、聚合函数、占位符等,需要熟悉 Cypher 的基本语法和使用方法才能正确理解和使用。
阅读全文