用cypher 语句携出neo4j 找到number='123' 中有关系(指向或被指向)的number数
时间: 2023-12-10 20:39:43 浏览: 82
可以使用以下的 Cypher 语句来查找与 `number = '123'` 有关系(指向或被指向)的 `number` 数:
```
MATCH (n1)-[]-(n2)
WHERE n1.number = '123' OR n2.number = '123'
RETURN DISTINCT n1.number, n2.number
```
这个语句会匹配所有与 `number = '123'` 有关系的节点,并返回这些节点的 `number` 属性。其中,`MATCH (n1)-[]-(n2)` 表示找到所有相互连接的节点对,`WHERE n1.number = '123' OR n2.number = '123'` 表示筛选出其中 `number` 属性为 `'123'` 的节点,`RETURN DISTINCT n1.number, n2.number` 表示返回这些节点的 `number` 属性,且去重。
相关问题
neo4j cypher语句
好的,您的问题是 "neo4j cypher语句",以下是一个简单的示例:
```cypher
MATCH (p:Person)-[r:KNOWS]->(f:Person)
WHERE p.name = 'Alice'
RETURN p, r, f
```
这个语句的意思是:匹配所有从名为 "Alice" 的人开始的 "KNOWS" 关系,返回这些人及其关系。
neo4j 用cypher语句找到 与numberA 在关系r1,r2,r3上出度节点一样的 numberB
可以使用以下 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 的基本语法和使用方法才能正确理解和使用。
阅读全文