如何查询出所有下级id

各位大佬下午好。
新手向各位咨询下,目前遇到一个问题。业务中存在id和上级id的关系,每个用户是通过上级id来关联的。在Nebula中如何查询某个id下的直接下级和所有下级。
大概得到这样的结构 id pid 直接下线数 累计下线数 位于层级第几层
我目前只能做到这一步,请各位大佬赐教

这个语句1,你可以变更下,不要输出 count,直接输出终点,你试试。

2 个赞

这样大体可以,不过有个问题,match是trail类型的,所以查出来的数据可能会有重复点,但hop不一样,这个在结果上是怎么考虑的?

好的 感谢您的解答,我试试先 :smiling_face_with_three_hearts:

重复点我倒是没考虑过,但是在我的理解下,这样查出来好像不会重复也 :thinking:

还有个问题 我最后需要的可能是我截图里列表每个id下的所有子节点,这个怎么写呢?可以在后面继续使用match吗,我看match后面继续match好像要报错也 :joy:

match (v:player)-[e*]->(v1) where id(v)==“player100” return distinct v1,size(e)
@xjc 讨论了下,用这个最好,简单内存占用也小。

不带distinct的话就所有都查出来
match (v:player)-[e*]->(v1) where id(v)==“player100” return v1,size(e)

1 个赞

每个id的意思是?

就是我目前截图里查出了pid为0的所有下级id ,然后需要对查出来的所有下级id也进行一个同样的操作(查出下级id的所有下级id的个数)。最终形成这样一个列表
image
大概就是这样的,我截图里的hops就应该是他的唯一第几层。现在的问题是查出的结果,需要每一个去迭代查询所有下级的过程。
我不知道我表述清楚没有,感谢大佬回复 :heart:

位于第几层 不是唯一

直接下线数、累积下线数、位于层级第几层、下线层级数分别表示什么含义最好说明下。

初步感觉,你可以通过类似下面的方法来处理
match (v:player)-[e1*]->(v1)-[e2*]->(v2) where id(v)==“player100” return v1,v2,size(e2)


比如这个简图,0的位于层级就是1,直接下级个数就是2,累计下级数就是7,下线层级数量就是3(也就是下线的最高层级数,这个不是很重要,能统计最好)

麻烦您有空再看看这个 :heart:

可以试试下面的方式

match (v:player)-[e10…]->(v1)-[e20…]->(v2) where id(v)==“player100” with id(v1) as V1,src(last(e1)) as Vn,size(e1) as length ,count(v2) as count return V1,Vn,length,count order by length

逻辑是把要打的点作为v1,下游点做为v2来计算和排序

谢谢您的解答,我大概明白怎么弄了,社区因您更美好 :smiling_face_with_three_hearts: :smiling_face_with_three_hearts:

2 个赞

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