TitanDB: избегайте двойного поиска, чтобы узнать, существует ли узел

Я пытаюсь проверить, существует ли вершина перед созданием новой или обновлением существующей:

 x = g.V().has('name','xyz').hasNext()  // /search 1

 if ( x != true ){
    g.V().addVertex( 'name', 'xyz' ) }

 g.V().has('name','xyz').property('x','1')  // search 2

В примере есть 2 поиска элемента с именем = xyz; Я хотел бы сохранить первый поиск в переменной и обратиться к нему позже.

Однако, если я пытаюсь сохранить поиск, он не сохраняется:

 gremlin> x = g.V().has('name','xyz')
 ==>v[40964336]
 gremlin> x
 gremlin>

Как избежать двух поисков в этом примере? - благодарю вас!!!


person alex_123    schedule 08.11.2015    source источник


Ответы (2)


Возможно, вы пропустили tryNext:

g.V().has('name','xyz').tryNext().orElseGet {
  graph.addVertex('name', 'xyz')
}.property('x', '1')
person Daniel Kuppitz    schedule 08.11.2015

Нашел свой собственный ответ: collect()

 x= g.V().has('name','axdas').collect()

 if ( x.size() > 0 ) { //set property
   }

 else { // add vertex
   }
person alex_123    schedule 08.11.2015
comment
Я думаю, что вы искали x = g.V().has('name', 'axdas').next() - person Pomme.Verte; 08.11.2015