2017-02-09 15 views
1

時間が保存されているmongoDBコレクションがあります。&が保存されています。 ユーザーが初めてのデータを入力すると、文書はちょっと次のようになります。ユーザーが再びデータを入力したときに、ドキュメントは既にこのユーザーのために存在している場合MongoDB/Mongoose - 追加で文書内の数値を更新する

{ "fullName" : "john smith", 
    "company" : "xyz", 
    "email" : "[email protected]", 
    "timeSaved" : 50 //this is in minutes 
    "moneySaved" : 10 //this is in dollars 
} 

は、今、私が見つけて、それがない場合、私が得ますそれ。

この時、ユーザ入力された:10

を保存

  1. 時間保存された55
  2. お金私がしたい既存の値に新しい値を追加します。したがって、ドキュメントには次のように表示されます。

    "timeSaved" : 105 // old 50 + new 55 
    "moneySaved" : 20 // old 10 + new 10 
    

    これを達成する最も良い方法は何ですか? mongodb/mongooseには、これを助けることができるinbuilt関数がありますか?

+1

[$ INC](https://docs.mongodb.com/manual/reference/operator/update/inc /) 役立ちます。 – Veeram

答えて

2

これは$incオペレータによって実行できます。 $incオペレータは、あなたの場合には例えば、指定された値

でフィールドをインクリメント:

UserModel.update(
    SomeFindCriteria, 
    { $inc: { timeSaved: newTimeSaved, moneySaved: newMoneySaved } } 
) 
+0

ああ完璧!とても簡単!お手伝いありがとう。 :D私はそれをテストした後、私は答えを受け入れるでしょう。 – Skywalker

関連する問題