簡體   English   中英

Gremlin Cayley查詢:如何進行多級查詢

[英]Gremlin Cayley query: How to have a multi leveled query

新的cayley並且無法弄清楚如何顯示具有未知數量級別的多級查詢。

例如,讓我們說節點之間的所有謂詞/關系都是“喜歡”。 如果我有這樣形狀的圖形。

A --> B

B --> C

C --> D

D --> E

...

我想跟隨火車並顯示整個喜歡的圖表。 我會用什么查詢? 這就是我嘗試過的。

function getLikes(x) { 
    return g.V(x).As("source").Out("likes").As("target)
}

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

這只會返回

{

“結果”:[

{

“全部”:{},

“和”:{},

“作為”:{},

“背部”: {},

......以及所有其他路徑選擇

我也試過了

return g.V(x).As("source").Out("likes").As("target).All()

而不是第二行代碼。 剛剛在末尾添加了.All()來完成查詢。 這將返回查詢結果,但可視化工具不顯示任何內容。 任何有關如何顯示此圖形的指導將非常感謝!

我不確定你是否仍然需要這個,但我還是要寫,因為我必須從Cayley上幾乎不存在的基於示例的文檔中學到同樣的東西。

為了遍歷圖形,Cayley在API中定義了.FollowRecursive()方法。 方法.FollowRecursive使用一種稱為態射的東西來弄清楚如何遞歸地遵循路徑。 根據我的理解,它似乎是一個抽象路徑對象,它編碼遞歸的情況(有點像你的getLikes函數(但不完全))。 以下是Gizmo查詢的示例,該查詢應該適用於完整的圖形/鏈遍歷。

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)

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
  })
})

我希望宇宙中有人發現它有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM