2013-10-03 2 views
4

mongoDB 문서의 특정 하위 필드를 업데이트하려고하고 있으며 문제의 개체를 먼저 찾고 나서 업데이트 된 개체를 저장하기로했습니다. 어떤 이유로, 저장 옵션이 내 변경 사항을 무시하는 것 같습니다.findOne을 사용하여 mongoDB 문서의 하위 필드를 업데이트하고 저장

나는 내 컬렉션에 하나의 객체가 있고, 다음과 같은 스키마 충족

var tschema= mongoose.Schema({ 
a: Object 
}) 

var t = db.model('tongoose',tschema); 
t.findOne({},function(err,obj){ 
    console.log(obj.a); //yields ['banana',3]  
    obj.a[1]=1; //to make ['banana',1] 
    console.log(obj); //yields ['banana',1] 

    obj.save(function(err,real){ 
    console.log(real); //yields ['banana',1] 
    }); 
}); 

을하지만 나는 MongoDB를로 돌아가서 저장된 객체를 볼 때, 어떤 변화를 보여주지 않았다. 내가 잘못하고있는 것을 발견 할 수 있니?

매우 감사드립니다. 스키마는 일반 객체로 a 정의하므로

답변

7

, 해당 필드는 몽구스에 의해 Mixed 유형으로 처리하고 변경 사항을 무시합니다 markModified 또는 save를 호출하여 변경으로 표시해야한다.

obj.markModified('a'); 
obj.save(function(err,real){ ... 

는 문서의 this pageMixed 유형의 설명을 참조하십시오.

+0

그건 작동합니다! 너 나에게 많은 두통을 덜어 줬어. 고마워. – Adam

관련 문제