Как связать команды в Гремлин? - PullRequest
2 голосов
/ 15 сентября 2011

Следующая команда работает

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 Ответ

8 голосов
/ 16 сентября 2011

Быстрый ответ: вам нужно перебрать ваш конвейер.

Длинный ответ: в Gremlin REPL итерация будет происходить для вас автоматически, если ваш последний оператор является итератором или итератором. Однако, если ваш последний оператор не является (например, println t), вы должны вручную выполнить итерацию / iterable.

Например, чтобы ваша предыдущая команда работала, выполните (обратите внимание на >> - 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

Далее, хотя вы не задавали этот вопрос, у вас возникнут проблемы с упорядочением, когда у вас будет два шага as () подряд. AsPipe - это MetaPipe в том смысле, что он оборачивает трубу / шаг, предшествующий ей (Gremlin основан на Pipes ). Лучше всего сделать это:

g.V.as('id')._.as('properties').table(t){it.id}{it.map}

То есть вставьте шаг идентификации между двумя шагами as ().

Надеюсь, это поможет, Марко.

http://markorodriguez.com

...