2011-09-15 31 views
2

以下命令作品如何在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 

爲什麼?

回答

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 

欲瞭解更多信息,請閱讀第一個問題的小鬼文檔的故障排除部分: 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()之間插入標識步驟。

希望有幫助, Marko。

http://markorodriguez.com

+0

謝謝馬爾科,它解決了我的問題。 – michaelSc