使用 findOne 更新 mongoDB 文档中的子字段并保存

2023-12-04

我正在尝试更新 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作为通用对象,该字段被视为Mixed由 Mongoose 键入,您需要通过调用将其标记为已更改markModified or save将忽略更改。

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

参见讨论Mixed键入这一页的文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 findOne 更新 mongoDB 文档中的子字段并保存 的相关文章

随机推荐