如何在Gremlin中链接命令?

mic*_*lSc 2 graph neo4j graph-databases gremlin

以下命令有效

t = new Table(); g.V.as('id').as('properties').table(t){it.id}{it.map}
print t
Run Code Online (Sandbox Code Playgroud)

以下命令有效

t = new Table();
g.V.as('id').as('properties').table(t){it.id}{it.map}; print t
Run Code Online (Sandbox Code Playgroud)

以下命令不起作用

t = new Table(); g.V.as('id').as('properties').table(t){it.id}{it.map}; print t
Run Code Online (Sandbox Code Playgroud)

为什么?

Mar*_*uez 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
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读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}
Run Code Online (Sandbox Code Playgroud)

也就是说,在两个as()步骤之间插入一个标识步骤.

希望有所帮助,Marko.

http://markorodriguez.com