2014-09-26 9 views
0

개체를 업데이트하려고하지만 개체가 업데이트되면 모든 정보가 바뀝니다.mongodb의 개체 내부 필드 업데이트

구조

var userSchema = mongoose.Schema({ 

    local   : { 
     email  : {type: String, unique: true}, 
     password  : String 
    } 
    name: String 
}); 

전에 업데이트

사용자

{ 
    name = 'foo', 
    local { 
     email: "[email protected]", 
     password: "foopass" 
    } 
} 

후 업데이트

{ 
    name = 'foo', 
    local { 
     email: "[email protected]" 
    } 
} 

이 내 쿼리입니다 :

router.put('/:id', function(req, res) { 

    User.findByIdAndUpdate(req.params.id, { 
    $set: { name: req.body.name, local: {email: req.body.email} } 
    }, { upsert: true }, 
    function(err, obj) { 
     return res.json(true); 
    }); 
}); 
대신 전체 local 객체를 업데이트하는 local 단지 email 속성을 대상으로 $set
+0

'$ 설정을 시도해보십시오 {이름 : req.body.name " local.email ": req.body.email}''$ set : {name : req.body.name, local : {email : req.body.email}} '대신에 –

답변

0

를 사용하여 점 표기법 :

router.put('/:id', function(req, res) { 

    User.findByIdAndUpdate(req.params.id, { 
     $set: { name: req.body.name, 'local.email': req.body.email } 
    }, { upsert: true }, 
    function(err, obj) { 
     return res.json(true); 
    }); 
}); 
+0

괜찮습니다. 감사 – user3902406