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

次に、この質問をしていませんが、2つのas()ステップが連続していると、注文の問題が発生します。AsPipeは、その前のパイプ/ステップをラップするという点でMetaPipeです(GremlinはPipesに基づいています)。これを行うのが最善です:

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

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

それがお役に立てば幸い、マルコ。

http://markorodriguez.com

于 2011-09-15T20:46:51.473 に答える