2014-12-11 1 views
0

하위 컬렉션이있는 문서가있는 시나리오가 있습니다. 자, 하위 컬렉션에서 하위 문서 중 하나를 수정/업데이트하려고합니다. 하위 문서를 수정하기 전에 상위 문서와 하위 문서를 먼저 일치시키고 싶습니다. 내가 사용하고 몽구스/Node.js를하고 MongoDB를 여기 부모 문서와 하위 문서가 일치 한 후 하위 문서 수정

내 스키마입니다 : - 여기
var mongoose  = require('mongoose'); 
var Schema  = mongoose.Schema; 

var HostSchema = new Schema({ 

    aid   :  String, 
    cars  :  [{ 
           carid : String, 
           status_code: Number     
         }] 
}); 

module.exports = mongoose.model('Host', HostSchema); 

내 코드입니다 : -

router.route('/xxx/').post(function(req, res) { 

    Host.findOne({ 
     _id : req.body.xid 
    }, { 
     cars : { 
      carid : req.body.yid 
     } 
    }, function(err, host) { 
     if (err) { 
      res.send(err); 
     } else { 
      // What to do? 
     } 
    }); 
}); 

나는 전체 하위 집합을 인쇄 할 수 있어요 대신 하위 컬렉션에서 일치하는 문서 하나만 인쇄해야합니다. 내 목표는 서브 수집 문서의 STATUS_CODE 필드를 수정하는 것입니다

답변

0
내 목표는

당신이 필요로하는 서브 수집 문서의 STATUS_CODE 필드를 수정하는 것입니다

$ 위치 연산자를 사용하여 쿼리와 일치하는 하위 문서를 업데이트합니다.

Host.update({"_id":req.body.xid,"cars.carid":req.body.yid}, 
      {$set:{"cars.status_code":50}},function(err,numEffected){ 
      console.log(numEffected); 
}) 
관련 문제