以下命令有效
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
为什么?
答案 0 :(得分:8)
快速回答:你需要迭代你的管道。
答案很长:在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,它包装了之前的Pipe / step(Gremlin基于Pipes)。最好这样做:
g.V.as('id')._.as('properties').table(t){it.id}{it.map}
即,在两个as()步骤之间插入一个标识步骤。
希望有所帮助, 马尔科。