Вложенная трансформация в Гремлин (Титан)

1

У меня есть граф с двумя вершинами с ключом под названием "тип".

Почему следующее:

g.V("type", "language").transform { language_1 ->
  1+1;
}

возвращает:

==>2
==>2

и следующее:

g.V("type", "language").transform { language_1 ->
  g.V("type", "language").transform { language_2 ->
    1+1;
  }
}

возвращает:

==>[GremlinStartPipe, GraphQueryPipe(has,vertex), IdentityPipe, TransformFunctionPipe]
==>[GremlinStartPipe, GraphQueryPipe(has,vertex), IdentityPipe, TransformFunctionPipe]

?

Теги:
groovy
gremlin
titan

1 ответ

2
Лучший ответ

Во втором примере вы видите строковое представление конвейера. Оба примера запроса возвращают конвейеры, но когда консоль Gremlin видит, что конвейер возвращается, он автоматически считывает все данные и выводит их. Если вы хотите использовать данные, возвращенные из вложенного конвейера в более крупном запросе, как и во втором запросе, вы должны явно прочитать данные. Попробуй это:

g.V("type", "language").transform { language_1 ->
  g.V("type", "language").transform { language_2 ->
    1+1;
  }.next()
}
  • 0
    Спасибо за ваш ответ @PaulJackson. Я попытался сделать, как вы говорите, но после ожидания в течение нескольких минут не удается с: Could not process individual retrieval call .
  • 0
    Это забавный запрос так, как он написан. Первый говорит: «иди и найди вершины с языком типов, и для каждого из них верни 1 + 1». Второе говорит: «Для каждого языка, верните конвейер, который установил 2 для каждого языка». (Таким образом, для трех языков вы получаете вложенный набор 3х3 по 2 с.) Убедитесь, что работает базовый запрос gV («тип», «язык»). Затем поэкспериментируйте с .next () или .next () ._ () после закрывающих фигурных скобок или обоих. Все комбинации возвращают что-то для меня, но я использую свою собственную консоль.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню