Как связать команды в Гремлин?
Следующая команда работает
t = new Table(); g.V.as('id').as('properties').table(t){it.id}{it.map}
print t
Следующая команда работает
t = new Table();
g.V.as('id').as('properties').table(t){it.id}{it.map}; print t
Следующая команда не работает
t = new Table(); g.V.as('id').as('properties').table(t){it.id}{it.map}; print t
Зачем?
1 ответ
Быстрый ответ: вам нужно повторить ваш конвейер.
Длинный ответ: в Gremlin REPL итерация будет происходить для вас автоматически, если ваш последний оператор является итератором или итератором. Однако, если ваш последний оператор не является (например, println t), то вы должны вручную выполнить итерацию / итерацию.
Например, чтобы ваша предыдущая команда работала, выполните (обратите внимание на >>-1):
t = new Table(); g.V.as('id').as('properties').table(t){it.id}{it.map}>>-1; print t
Для получения дополнительной информации прочитайте первую проблему в разделе устранения неполадок документации Gremlin: https://github.com/tinkerpop/gremlin/wiki/Troubleshooting Troubleshooting
Далее, хотя вы не задавали этот вопрос, у вас возникнут проблемы с упорядочением, когда у вас будет два шага as() подряд. AsPipe - это MetaPipe в том смысле, что он оборачивает трубу / шаг, предшествующий ей (Gremlin основан на Pipes). Лучше всего сделать это:
g.V.as('id')._.as('properties').table(t){it.id}{it.map}
То есть вставьте шаг идентификации между двумя шагами as().
Надеюсь, это поможет, Марко.