请问如何使用指定的EDGE的属性进行变长查询

提问参考模版:

  • nebula 版本:2.5.0
  • 部署方式:分布式 / 单机
  • 安装方式:RPM
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述
    一个EDGE,但属性有多个值,希望根据指定的多个属性,进行变长查询
    语法不报错,但是查询不能显示结果,请指教,谢谢
    relationship.relationType 是有索引的
    如下语句,无法查出任何记录
    match (p1) -[r:relationship*1…2{relationType:‘02’,relationType:‘03’}]-(p2)
    where id(p1) == 891768826922942464
    return p1,r,p2

但如下,只查找属性的一个值时,则正常
match (p1) -[r:relationship*1…2{relationType:‘02’}]-(p2)
where id(p1) == 891768826922942464
return p1,r,p2

这里 1…2 的时候 r 是列表哈。

如果想要通过描述多跳的边的过滤条件,比如-[e:follow*2]->,这时候 e 不再是单条边时候的数据类型了,而是一列边组成的列表,例如: 以下语句可以运行但是没有返回数据,因为e是一个列表,没有.degree的属性。

错误的表达

nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \
        WHERE e.degree > 1 \
        RETURN DISTINCT v2 AS Friends;

这是正确的表达:

nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \
        WHERE ALL(e_ in e WHERE e_.degree > 0) \
        RETURN DISTINCT v2 AS Friends;

进一步,这是表达对多跳边的第一跳的边属性过滤的表达:

nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \
        WHERE e[0].degree > 98 \
        RETURN DISTINCT v2 AS Friends;

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

浙ICP备20010487号