MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật bản ghi bằng mongoose

Bạn có thể sử dụng &elementMatch để tìm phần mong muốn trong mảng và trong đối tượng setField, bạn có thể sử dụng vị trí $ toán tử xác định phần tử phù hợp trong truy vấn.

Vấn đề là nếu nó không tìm thấy bất kỳ phần nào phù hợp với season_number , tài liệu sẽ không được cập nhật. Trong trường hợp này, bạn có thể đặt một truy vấn cập nhật khác để thêm phần này vào seasons mảng.

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)
    }
  })
})

Bạn có thể xem tại đây một số toán tử mảng mongodb.

Hy vọng nó sẽ hữu ích.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Hiển thị các mục trẻ em trong mối quan hệ Một đến Nhiều

  2. 5 cách để chọn hàng có giá trị tối đa cho nhóm của chúng trong SQL

  3. MongoDB $ sin

  4. mongodb tổng hợp php

  5. Mongoose tổng hợp, không thể thêm động someField:{$ not; vô giá trị }