0

ドキュメントにはすべて {max, increment, value} があり、this.value = max( this.max + this.increment) でそれらすべてを反復処理したいと考えています。

現在、それらすべてを find() し、それぞれで value = Math.min( max, value + increment) を実行してから、それらすべてをサーバーに保存します(これはmongodbで行います)。

ご覧のとおり、これはひどい方法です。サーバー側のみで、すべてのドキュメントに対してこの命令を実行したいと思います。

どうすればこれを行うことができますか?これをさらに最適化するためにインデックスを使用する人、またはインデックスが役に立たない理由を説明する人へのブラウニー。

サーバーとネイティブ mongodb ライブラリに NodeJS を使用しています。

4

1 に答える 1

1

次のようなマップ関数を作成できます。

db.yourcollection.mapReduce(mapFunctions...)

http://docs.mongodb.org/manual/core/map-reduce/

「Map-Reduce 操作は複雑な集計タスクを処理できます。Map-Reduce 操作を実行するために、MongoDB は mapReduce コマンドを提供し、mongo シェルでは db.collection.mapReduce() ラッパー メソッドを提供します。」

http://docs.mongodb.org/manual/tutorial/map-reduce-examples/

于 2013-05-10T11:40:53.227 に答える