2017-06-08 7 views
0

私はmongoDBとmongoDBコレクションを管理しています。 2つの数値フィールドを含む1つのコレクションがあります。私は、これらの2つのフィールドの1つが更新されるたびに、これらのフィールドを分割した結果で別のフィールドを設定したいと考えています。Mongo - ドキュメントが更新されると、別のフィールドの結果でフィールドを更新します。

のは、これが私のMongoのコレクションで座ってみましょう:

{ 
    id: 1, 
    num1: 100, 
    num2: 50, 
    result: 2 
}, 
{ 
    id: 2, 
    num1: 200, 
    num2: 10, 
    result: 20 
}, 
{ 
    id: 1, 
    num1: 40, 
    num2: 5, 
    result: 8 
} 

さて、私は新しい正しい値(で再計算し、結果セットのフィールドにしたいIDが2の項目が更新され、NUM1が50に設定されています10)。

(アイテムを更新するために、私はbulk.find()。upsert()。updateOne()funcitonを使用します)。

どのようにパフォーマンスを低下させることができますか?

答えて

1

あなたは計算を行うために事前にセーブフックを使用することができます。

schema.pre('save', function(next) { 
    this.result = this.num1/this.num2; 
    next(); 
}); 

...「スキーマは」あなたのマングースのスキーマです。

num1またはnum2を更新すると、結果が計算されて保存されます。

関連する問題