nql语句查询

  • nebula 版本:2.5.1
  • 部署方式:分布式
  • 安装方式:源码编译
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 哪位大佬看看,这条语句如何写啊?
    目前有点qzd_kg_company_info_v2 表示所有公司信息,边SHList 表示公司股东。想查出公司的最终受益人,就是最终的持股人。还需要返回持股路径。

想着通过以下路径查询,但是没有返回结果:
MATCH p = (v:qzd_kg_company_info_v2)-[e*1…10]->(v2)-[e2]->(v3) where id(v)==“ceadada4-66c1-491d-9baa-4f693966f177” and id(v3) is null RETURN p;

代码 / 终端输出 / 日志…

应该主要解决的问题是:如何筛选没有出边的点?或者如何表示

没有出边的点指的是最终收益人?大佬不应该有很多出边嚒 :cowboy_hat_face:

MATCH p=(v1:company)-[*1..10]->(v2:company)-[:SHList]->(v3:person)
WHERE id(v1)=="company1"
RETURN v3.person.name, p

跟你写的类似。没有结果不是因为 id(v3) is null 不满足条件?

边表示的是公司的股东,没有出边了表示该公司没有股东了。我们再业务上认为是最终受益人

就是不知道如何表达v2没有出边

可以通过在 where 子句里面用 size() 函数实现,类似如下:

match (v1:player) where size((v1)-[]->()) == 0 return v1;

size() 里面的 pattern 可以指定边的类型,比如:

match (v1:player) where size((v1)-[:like]->()) == 0 return v1;

可能尝试改成这样:

MATCH p=(v1:company)-[*1..10]->(v2:company)-[:SHList]->(v3:person)
WHERE id(v1) == "company1" and size((v3)-[]->()) == 0
RETURN v3.person.name, p

没有其他出边哈?

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