找到 mongo 文档后对其进行更新



我正在尝试从传递的对象 ID 数组中更新许多文档。我希望能够通过将用户 ID 推送到访问者数组中来更新每个文档。 我收到此错误强制转换错误:值强制转换为对象 ID 失败。请参阅下面的代码

var estates = req.params.estates.split(',');
 Estate.findByIdAndUpdate({ _id: { $in: estates } }).then(function(Estate)
{
   Estate.visitors.push(mongoose.Types.ObjectId( req.params.userid));
   Estate.save();
});

根据猫鼬文档findByIdAndUpdate第一个参数是一个id,你正在传递一个object

尝试将其替换为findOne({ _id: { $in: estates } })

您的API用法是错误的,findByIdAndUpdate的第一个参数应该是id,它无法将数组转换为id。

用于匹配和更新多个文档,

您需要使用updateMany

db.foo.updateMany({"_id" : { $in : [1,2,3] }},{$push : {test: 2}},{$upsert : false})

update multi : true选项

db.store.update({"_id" : { $in : [1,2,3] }},{$push : {test: 2}},{$upsert : false, multi : true})

输出

{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 0 }

Estate.update({ _id: { $in: estates } }, {$push : {visitors : req.params.userid}}, {multi : true, upsert : false})

Doc findByIdAndUpdate

相关内容

  • 没有找到相关文章

最新更新