- nebula 版本:v2.6.1
- 部署方式:分布式
- 安装方式:RPM
- 是否为线上版本:Y
目前有这种拓扑结构
A 是一种tag, B,C,D,E,F 是一种tag,和A有一种隶属于的REL1关系。
B,C,D,E,F 之间又存在关系REL2。
需求是:
给定了C 和A 的VID, 如何通过关系REL2 找到和C 同样隶属于A的其他节点
目前两种方案:
- 不改动schema
go from vid(c) over REL2 bidirect yield dst(edge) as id | go from $-.id over REL1\
where dst(REL1) == vid(A)
但是这个方案总觉得多做了一层查询,多了一层性能浪费,请问有什么较好的写法吗?
- 修改schema 添加和A 的关系到节点属性上,改动太大,暂时不考虑了。
kyle
2
MATCH (v)-[:REL1]-(n:tag2) where id(v)=="A"
RETURN n
是根据A 和 C 找到和C 有关系的B,D,E
这个写法是找到和A 有关系的,不满足需求的。
kyle
6
MATCH (v)-[:REL1]-(n:tag2) where id(v)=="A"
MATCH (m) where id(m)=="C" and (n)-[:REL2]-(m)
RETURN n
这个和下面的没啥特别大的区别,都是需要寻找两次吧
go from vid(c) over REL2 bidirect yield dst(edge) as id | go from $-.id over REL1\
where dst(REL1) == vid(A)
system
关闭
10
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。