【问题标题】:Gremlin: otherV() not working inside order().by()Gremlin:otherV() 在 order().by() 中不起作用
【发布时间】:2016-01-08 11:35:34
【问题描述】:

我正在使用 Tinkerpop 3.0.1 (Titan 1.0.0),我尝试列出一个顶点的所有边,按边另一端节点的度数排序。

我试过了:

g.V(1482896).bothE().order().by(otherV().bothE().count(), decr)

我从 Titan 收到以下错误:

遍历器的路径历史不包含前一个顶点:[e[1d2m8u-1d70ts-b2t-vs7k][82628848-DIRECTED->1482896]]

奇怪的是,路径中有一个先前的顶点(即顶点#1482896。我对如何解决这个问题感到困惑。

【问题讨论】:

  • 确实令人困惑。这似乎对我有用。 gremlin> graph = TitanFactory.open('inmemory'); g = graph.traversal() ==>graphtraversalsource[standardtitangraph[inmemory:[127.0.0.1]],标准] gremlin> v = graph.addVertex('name','jason'); w = graph.addVertex('name','david'); e = v.addEdge('to',w) ==>e[17j-3co-1lh-3a0][4344-to->4248] gremlin> g.V(v.id()).bothE().order( ).by(otherV().bothE().count(), decr) ==>e[17j-3co-1lh-3a0][4344-to->4248]
  • @JasonPlurad 谢谢!我正在使用 Berkeley DB 存储。这在内存中工作并且在 Berkeley DB 中失败可能表明存在实际错误。

标签: titan gremlin tinkerpop3 gremlin-server


【解决方案1】:

回答我自己的问题,玩弄这个之后,我找到了一个解决方法:

g.V(123).bothE().as('edges')
 .otherV().order().by(bothE().count(), decr)
 .select('edges')

这将有效地按照边缘另一端节点的最高度对与顶点 #123 相邻的边缘进行排序。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2014-08-03
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多