首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gremlin Cayley查询:如何进行多层次查询

Gremlin Cayley查询:如何进行多层次查询
EN

Stack Overflow用户
提问于 2015-07-08 17:10:25
回答 1查看 782关注 0票数 3

对于cayley来说是新的,并且无法知道如何以未知的级别显示多个级别的查询。

例如,让我们说节点之间的所有谓词/关系都是“喜欢”的。如果我有这样的图形。

A --> B B --> C C --> D D --> E ..。

我想跟着火车,展示整个喜欢的图表。我会使用什么查询?这就是我尝试过的。

代码语言:javascript
复制
function getLikes(x) { 
    return g.V(x).As("source").Out("likes").As("target)
}

getLikes("A").ForEach( function(d) {
    g.Emit(getLikes(d))
})

这只会回来

{ “结果”:[ { “全部”:{}, “和”:{}, "As":{}, “后退”:{}, ..。以及所有其他路径选项

我也试过

代码语言:javascript
复制
return g.V(x).As("source").Out("likes").As("target).All()

而不是第二行代码。刚在最后添加了.All()来完成查询。这将返回查询结果,但是可视化工具没有显示任何内容。任何关于如何显示这类图表的指导都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-06-15 15:13:26

我不确定你是否还需要这个,但我还是要写,因为我必须从几乎不存在的基于Cayley的例子文档中学到同样的东西。

为了遍历一个图,Cayley在.FollowRecursive()中定义了一个API接口方法。.FollowRecursive方法使用一种叫做Morphism的方法来确定如何递归地遵循路径。据我理解,它似乎是一个抽象的path对象,它编码递归情况(类似于您的getLikes函数(但不是完全))。下面是一个Gizmo查询的示例,它应该适用于完整的图/链遍历。

代码语言:javascript
复制
var path = g.M().Out("edge_name_here");
var start_node = "begin";

//Path query
//Note that FollowRecursive expects a Morphism path
g.V(start_node).FollowRecursive(path).All() //That's all.

若要可视化整个遍历或进一步查询每个顶点,请使用.ForEach()构造(请参阅API)

代码语言:javascript
复制
g.V(start_node).FollowRecursive(path).ForEach( function(v){
  //In here we can do further querying or more vaguely put "stuff"
  g.V(v.id).Out(chain_pred).ForEach( function(t){
    var node = { //This source, target formulation works for visualization for eg.
      source: v.id,
      target: t.id
    }

    g.Emit(node) //This throws the output into the final result bucket
  })
})

我希望宇宙中的某个人会发现这有帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31299240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档