neo4j向一个出度方向遍历所有节点,第一层出度的节点遍历后,以后的节点不管出度还是入度都遍历,n层如何用cypher查询
时间: 2024-03-08 09:45:55 浏览: 18
你可以使用Cypher查询语言中的`MATCH`和`OPTIONAL MATCH`关键字来向一个出度方向遍历所有节点,并且在第一层出度的节点遍历后,以后的节点不管出度还是入度都遍历。你可以使用`*`符号来表示任意长度的路径。
例如,如果你想要向一个出度方向遍历所有的`Person`节点,并且在第一层出度的节点遍历后,以后的节点不管出度还是入度都遍历,可以使用以下Cypher查询:
```
MATCH (p:Person)-[*]->(n)
RETURN DISTINCT n
```
这将返回所有与`Person`节点相连接的节点`n`,不管是入度还是出度,并且去除重复的节点。这个查询会包含第一层出度的节点,以及它们的后继节点,无论它们是向内还是向外的连接。如果你想要遍历n层,可以将`*`符号替换为`*1..n`,其中`n`是你想要遍历的层数。例如,如果你想要遍历3层,可以使用以下Cypher查询:
```
MATCH (p:Person)-[*1..3]->(n)
RETURN DISTINCT n
```
这将返回所有与`Person`节点相连接的节点`n`,不管是入度还是出度,并且去除重复的节点。这个查询会包含第一层出度的节点,以及它们的后继节点和它们的后继节点的后继节点,最多遍历3层。
相关问题
neo4j 遍历nodes(p) ,找到每个节点的关系R下的节点B的属性age
您好!针对您的问题,可以使用Cypher查询语言来实现:
```cypher
MATCH (p)-[R]->(B)
RETURN B.age
```
这个查询语句会遍历所有的节点 `p`,找到 `p` 的每个关系 `R`,然后找到与 `R` 相连的节点 `B`,最后返回 `B` 节点的属性 `age`。
neo4j查询,一个节点两个属性用.拼接后等于另一个节点的id属性
你好!感谢你的提问。对于你的问题,可以使用Cypher语句进行查询,具体语句如下:
```
MATCH (n1), (n2)
WHERE n1.property1 + '.' + n1.property2 = n2.id
RETURN n1, n2
```
其中,n1和n2分别代表两个节点,property1和property2代表n1节点的两个属性,id代表n2节点的id属性。在WHERE子句中,使用拼接符号"."将n1节点的两个属性拼接后与n2节点的id属性进行比较,如果相等则返回n1和n2节点。你可以根据实际情况修改属性名和节点标签。
希望能回答你的问题。