nGQL语法请教v2

nebula 版本:2.0.1

nebula 能否实现在多跳中同时过滤出发点、边属性、目标点属性?
我尝试了以下语法,查不到结果。

MATCH p = (v) - [e*1…5] - (v2)
WHERE id(v) == “123456”
AND (v2.property_a==true or v2…property_b==true)
AND e.edge_a.time==“2021-03-15 09:22:45”
RETURN DISTINCT p

实际上去掉 AND e.edge_a.time==“2021-03-15 09:22:45” 是可以查到的,
并且也确实存在edge_a.time=="2021-03-15 09:22:45"记录

MATCH p = (v) - [e*1…5] - (v2)

这里的 e,返回是一个列表,从 1 跳到 5 跳的边,所以 e.edge_a.time 肯定不是时间了。
如果你想指定第 5 跳的过滤,可以

MATCH p = (v) - [e*1…5] - (v2)
WHERE id(v) == “123456”
AND (v2.property_a==true or v2…property_b==true)
AND e[4].time==“2021-03-15 09:22:45”
RETURN DISTINCT p

如果想所有的边都用过滤,可以参考 https://docs.nebula-graph.io/2.0.1/3.ngql-guide/6.functions-and-expressions/8.predicate/,用 all(a in [1,2] where) 的方式。

MATCH p = (v) - [e*1…5] - (v2)
WHERE id(v) == “123456”
AND (v2.property_a==true or v2…property_b==true)
AND all(b in e where b.time==“2021-03-15 09:22:45”)
RETURN DISTINCT p
4 个赞

确实有效,赞!

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。