2013-10-03 92 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的并查找保存的对象,它从来没有显示任何改变。你能发现我做错了什么吗?

非常感谢。

回答

7

因为你的模式a定义为一个通用的对象,即场被视为Mixed类型的猫鼬,你需要通过调用markModifiedsave会忽略变化改变其标记。

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

查看的文档的this pageMixed类型的讨论。

+0

工作!你救了我很多头痛。非常感谢。 – Adam

相关问题