我正在尝试从传递的对象 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