2011-11-08 11 views
0

私は多くのクエリを保存しようとしています。私はMongooseをODMとして使用しています。MongoDBの値が異なるレコードを更新します。

私は、50K +の要素を言って、私はこれをかなり大きな配列topic_codesを持ってやっている(CoffeeScriptの):

ここ
conditions = code: $in: topic_codes 
    update  = $push: samples: date: point_in_time, volume: ?? 
    options = multi: true 
    TopicArchive.update conditions, update, options, (err) -> 

私はある、「サンプル」で新しいサブドキュメントを挿入しようとしています配列、2つの属性、の日付およびのボリュームを持つオブジェクトのドキュメントです。

日付は私が更新したいすべてのレコードで同じですが、ボリュームはそうではありませんし、レコードにレコードから異なる場合があります。

巨大なデータベースヒットを経験することなく、私の目標を達成する方法はありますか?

答えて

1

複数の更新プログラムは、更新指定子に従って一致するすべてのドキュメントを更新します。各文書を異なる値で更新したい場合は、N個の文書に対してN個の更新を発行する必要があります(N個の更新指示子ごとにN個の更新が必要です)。たとえば、volumeの数がtopic_codesよりも少ない場合は、一連の複数更新を発行できます。それぞれの更新は、volumeと同じ文書にのみ適用され、既に使用しているとおりに$inを使用します。

+0

アレイをボリューム単位でグループ分けして更新するのは良い考えです。 – kain

関連する問題