通过边的属性值过滤边显示结果不正确

nebula 版本:3.2.1
部署方式:分布式
安装方式:RPM
是否为线上版本:Y
硬件信息
磁盘 非SSD
CPU、内存信息 单节点 4core8g
问题的具体描述

我使用如下的nGQL查询vid为76517618765348的2跳路径数据

MATCH p=(v)-[e:`belong`*2]-(v2) 
WHERE id(v) IN ["76517618765348"] 
    AND ALL(l IN e WHERE  l.create_long == 1665368234) RETURN p LIMIT 100

查询结果如下图

其中边belong有类型为long,名称为create_long的属性,我这里通过==关系查询值为1665368234的边进行过滤,为什么无法查询到对应的数据呢?

真实存在的数据关系如下图

希望大佬能帮忙看下,先谢了!

查不出数据不是对的吗?76517618765348 这个点的边上 create_long 就不是 1665368234 啊

按照文档来说belong*2是定长的路径,ALL不是从这定长的路径中进行条件的过滤吗?


真实的数据中,有一个边的create_long属性值是 1665368234 ,见下图

还是我理解的不对,大佬指点一下 :sob:

而通过下面的查询方式

MATCH p=(v)-[e:`belong`*2]-(v2) 
WHERE id(v) IN ["76517618765348"] 
    AND e[1].create_long == 1665368234 RETURN p LIMIT 100

是能查询出对应的数据,如下图
image

All 函数是说列表里边所有元素都满足条件,如果你只希望路径里边只要有一条边的 create_long 值为 1665368234 那么需要用 ANY 函数:

MATCH p=(v)-[e:`belong`*2]-(v2) 
  WHERE id(v) IN ["76517618765348"] AND ANY(l IN e WHERE  l.create_long == 1665368234) 
RETURN p LIMIT 100
2 个赞

明白了。这种写法的语法在文档中哪个部分呢?只看到了谓词函数中对all和any的解释。

l IN e WHERE  l.create_long == 1665368234 

这种写法在哪里可以学习到呢?
多谢大佬

nebula 的文档有的吧

文档的话,关于 any() 函数在这里

1 个赞

之前粗心了。现在看到了。多谢

谢错人哩 :face_in_clouds:

:ghost: :love_you_gesture:

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