2016-01-08 2 views
1

Я использую Tinkerpop 3.0.1 (Titan 1.0.0), и я пытаюсь перечислить все ребра для вершины, отсортированные по степени узла на другом конце края.Gremlin: otherV() не работает внутри order(). By()

Я пробовал:

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

Я получаю следующее сообщение об ошибке от Titan:

История путь не транспортер содержит предыдущую вершину: [е [1d2m8u-1d70ts- B2T-vs7k] [82628848-DIRECTED-> 1482896]]

странная вещь, там является предыдущая вершина в пути (а именно, вершина # 1482896. Я смущен тем, как решить эту проблему.

+2

Смущает, действительно. Кажется, это работает для меня. gremlin> graph = TitanFactory.open ('inmemory'); g = graph.traversal() ==> graphtraversalsource [standardtitangraph [inmemory: [127.0.0.1]], standard] 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> gV (v.id()) .E(). (0) ==> e [17j-3co-1lh-3a0] [4344-to-> 4248] –

+0

ack, formatting ... https : //gist.github.com/pluradj/bb2d3a1bea0e1444127a –

+0

@JasonPlurad спасибо! Я использую хранилище DB Berkeley. Это работает в памяти и не работает с Berkeley DB может указывать на реальную ошибку. –

ответ

3

Отвечая на мой собственный вопрос, после того, как играть с этим, я нашел обходной путь:

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

Это будет эффективно сортировать краями прилегающих к вершине # 123 на самой высокой степени узла на другом конце края ,

Смежные вопросы