【发布时间】:2020-02-10 19:13:04
【问题描述】:
我正在制作一个用户可以成为朋友的社交应用。
对于给定的用户A,我想找到所有用户的三元组,例如A -isFriends-> B AND B -isFriends-> C AND C -isFriends-> A。
我目前的做法如下:
g.V(A).repeat(__.out('isFriends')).times(3).path().by(id).toList()
然后在 gremlin 之外,我过滤掉第一个对象与最后一个对象不同的所有 Path 对象。我希望 gremlin 为我做这个过滤,但我不确定如何根据 path() 的输出进行过滤。
我试过cyclicPath(),但这只是返回一个顶点对象的平面列表,我不明白。由此我希望与path() 有类似的输出,但只包含第一个和最后一个顶点相同的路径。如果这个预期不正确,请告诉我。
我还想根据子遍历的结果(三个顶点有多少共同朋友)对这些路径进行排序,但我不确定如何从输出中包含的顶点开始运行遍历path(),无需启动新的 gremlin 查询。
我正在使用 javascript-gremlin 驱动程序 (v3.4.4) 并对 AWS Neptune 进行查询,其中 lambdas 不可用。
如果我的方法或理解有问题,请告诉我。
【问题讨论】:
标签: javascript gremlin amazon-neptune