次のような大量の(数百万以上の)ドキュメントのコレクションがあるとします。
{ _id : ObjectId, "a" : 3, "b" : 5 }
これらのドキュメントをサーバー上で直接処理し、結果を同じコレクション内の各ドキュメントに追加する最も効率的な方法は何ですか?たとえば、c
値がに等しいキーを追加しますa+b
。
{ _id : ObjectId, "a" : 3, "b" : 5, "c" : 8 }
シェルでこれを実行したいと思います。
dbfind().forEach()
とシェルの間の転送に時間がかかるmapReduce()
ようで、オブジェクトのグループを集約データに処理することを目的としているようです(誤解されているかもしれませんが)。
編集:(クライアントでカーソルを使用する以外に)ブロックされないソリューションがあれば、それを好みます...