如何在Gremlin中链接命令?

时间:2011-09-15 15:54:00

标签: graph neo4j graph-databases gremlin

以下命令有效

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 个答案:

答案 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()步骤之间插入一个标识步骤。

希望有所帮助, 马尔科。

http://markorodriguez.com