2

以下命令有效

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

为什么?

4

1 回答 1

8

快速的答案:您需要迭代您的管道。

长答案:在 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

接下来,虽然您没有问这个问题,但当您连续执行两个 as() 步骤时,您会遇到排序问题。AsPipe 是一个 MetaPipe,因为它包装了之前的 Pipe/step(Gremlin 基于Pipes)。最好这样做:

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

也就是说,在两个 as() 步骤之间插入一个恒等步骤。

希望有帮助,马尔科。

http://markorodriguez.com

于 2011-09-15T20:46:51.473 回答