2011-09-15 4 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

速い答え:あなたのパイプラインを繰り返す必要があります。

長い答え:あなたの最後の文はイテレータまたは反復可能であればグレムリンREPLでは、反復は自動的にあなたのために起こります。ただし、最後のステートメントが(たとえばprintln t)ではない場合は、イテレーター/イテレーターを手動で反復する必要があります。

たとえば、あなたの前のコマンドを動作させるために、(>>注意 - 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

次あなたがこの質問をしなかった、あなたは、行で2)(としてのステップを持っているときの問題を注文するに実行されます。 AsPipeはMetaPipeであり、前にパイプ/ステップをラップしています(GremlinはPipesに基づいています)。

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

つまり、2つのas()ステップの間に同一性ステップを挿入します。

希望があれば、 Marko。

http://markorodriguez.com

+0

マルコありがとう、それは私の問題を解決しました。 – michaelSc

関連する問題