Как вы возвращаете один объект в отличие от одного элемента в массиве?

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

Я пробовал:

g.V()
.has("Project", "id", eq("someid"))
.outE("Contains")
.inV()
.hasLabel("Goal")
.sample(1)
.values("name")

Также попробовал:

g.V()
.has("Project", "id", eq("someid"))
.outE("Contains")
.inV()
.hasLabel("Goal")
.limit(1)
.values("name")

Я также пробовал сбросить, но ни один из них не работал для меня. Есть идеи?

1 ответ

Я не совсем понимаю, что вы хотите, но ваш обход должен возвращать только одно значение "имя", а не список значений "имя", хотя я думаю, что я предпочел бы второе, так как вы сказали, что хотите вернуть первый элемент. Я бы переписал это следующим образом:

g.V().has("Project", "id", "someid").
  out("Contains").hasLabel("Goal").
  values("name")
  limit(1)

Вы только что вставили немного Гремлин сюда, но вы также можете next() Iterator чтобы получить этот единственный первый объект:

String name = g.V().has("Project", "id", "someid").
                ...
                limit(1).next()

Если по каким-либо причинам вы видите какое-то другое поведение в возвращаемых значениях, обновите ваш вопрос, включив в него пример сценария данных ( пример), чтобы его можно было легко воспроизвести в консоли Gremlin.

Другие вопросы по тегам