match(p )-[r]->(n:LiuJingBing{name:'太阳病'}) return p.name,r.name,n.name,labels(p) Union all match(p:LiuJingBing {name:'太阳病'}) -[r]->(n) return p.name, r.name, n.name,labels(n)有错吗?
时间: 2023-06-15 08:06:10 浏览: 42
根据你提供的 Cypher 查询语句,第一条查询语句中的 `p` 变量并没有指定节点标签,可能会返回多种类型的节点,因此最后一个 `labels(p)` 可能会返回多个标签。对于第二条查询语句,你只指定了起始节点的标签为 `LiuJingBing`,但是没有指定该节点是 `太阳病` 节点,因此可能会返回多个起始节点。如果你想要查询与 `太阳病` 节点相关的关系,可以使用以下查询语句:
```
MATCH (p)-[r]->(n:LiuJingBing{name:'太阳病'})
RETURN p.name, r.name, n.name, labels(p)
UNION ALL
MATCH (p:LiuJingBing{name:'太阳病'})-[r]->(n)
RETURN p.name, r.name, n.name, labels(n)
```
该查询语句先查询与 `太阳病` 节点有关系的所有节点和关系,然后查询所有以 `太阳病` 节点为起始节点的关系。
相关问题
match(p )-[r]->(n:LiuJingBing{name:'太阳病'} 怎么获取p的标签
要获取p节点的标签,可以使用以下Cypher查询语句:
```
MATCH (p)-[r]->(n:LiuJingBing{name:'太阳病'})
RETURN labels(p)
```
该查询语句中,使用`labels()`函数获取p节点的所有标签。如果p节点有多个标签,该函数会返回一个标签列表。
match(p )-[r]->(n:LiuJingBing{name:'%s'}) return p.name,r.name,n.name,labels(p)\ Union all\ match(p:LiuJingBing {name:'%s'}) -[r]->(n) return p.name, r.name, n.name,labels(n)
这是一个 Cypher 查询语句,用于在 Neo4j 数据库中查询与指定的 LiuJingBing 节点相关的关系。其中 %s 需要替换为具体的节点名称。
第一部分查询出以指定节点为终点的关系,返回关系的起点节点、关系类型、终点节点和起点节点的标签。
第二部分查询出以指定节点为起点的关系,返回起点节点、关系类型、关系的终点节点和终点节点的标签。这两个查询使用 Union All 进行合并,返回结果为两个查询结果的并集。