sql >> データベース >  >> NoSQL >> MongoDB

マングースでレコードを更新する

    &elementMatchを使用できます 配列内で希望の季節を見つけるには、setFieldオブジェクトで位置$を使用できます。 クエリで一致した要素を識別する演算子。

    問題は、season_numberに一致するシーズンが見つからない場合です。 、ドキュメントは更新されません。この場合、別の更新クエリを設定して、今シーズンをseasonsに追加できます。 配列。

    router.put('/api/shows/:id/seasons/:sid', function(req, res){
    
      var query = {
        "_id": req.params.id,
        "seasons": { 
          $elemMatch: { 
            "season_number": req.params.sid 
          } 
        }
      }
    
      var setField = {
        $addToSet: {
          "seasons.$.episodes": req.body
        }
      }
    
      TV.findOneAndUpdate(query, setField, {upsert:true}, function(err, results){
        if (err && err.code == 16836) { // no document was matched
          var season = {
            "season_number": req.params.sid
            "episodes": [ req.body]
          }
          TV.findOneAndUpdate({"_id": req.params.id}, {$push: {"seasons": season}} , function(err, result) {
              console.log("Inserted document in array");
              res.json(result)
          }); 
        }
        else if (err){
           console.log(err);
           res.status(500).send('Something wrong!');
        }
        else {
           console.log(setField);
           res.json(results)
        }
      })
    })
    

    こちら をご覧ください。 いくつかのmongodb配列演算子。

    お役に立てば幸いです。




    1. RedisConf18のRdbtools

    2. Mac for MongoDB用の優れたデータベース管理アプリはありますか? Sequel Proに似ていますか?

    3. 負荷テスト中にMongoDBが応答しないのはなぜですか?

    4. マングースでmongodockerイメージに接続できません