Ada*_*dam 4 javascript mongoose mongodb node.js
我正在尝试更新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]
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我回到mongoDB并查找保存的对象时,它从未显示任何更改.你能发现我做错了什么吗?
非常感激.
因为您的模式定义a为通用对象,所以MixedMongoose 将该字段视为类型,您需要通过调用将其标记为已更改,markModified否则save将忽略该更改.
obj.markModified('a');
obj.save(function(err,real){ ...
Run Code Online (Sandbox Code Playgroud)
请参阅文档此页面上的Mixed类型讨论.