gpt4 book ai didi

node.js - 使用 Node.js 通过其唯一 _id 更新多个 MongoDB 对象

转载 作者:IT老高 更新时间:2023-10-28 13:27:30 25 4
gpt4 key购买 nike

基本上,我正在尝试根据其唯一的 objectID (_id) 更新 Mongo 数据库中的多个对象。我尝试了以下方法,但没有奏效:

  var new_arr = [];
for (var i = 0; i < req.body.length; i++) {
// req.body is an array received from the POST request.
new_arr.push({"_id": new mongodb.ObjectID(req.body[i])})
}
console.log(new_arr);

// new_arr is not accepted since an object is expected.
job_applications.updateMany(
new_arr
,
{
$set: {"application_status": "rejected"}
}, function (err, results) {
console.log(results);
console.log(err);
if (!err) {
console.log('success with reject');
res.sendStatus(200);
}
}
);

我也尝试了以下方法,但没有成功。

var job_applications = req.app.locals.job_applications;
var new_arr = [];
for (var i = 0; i < req.body.length; i++) {
// req.body is an array of unique IDs (_id)
new_arr.push(new mongodb.ObjectID(req.body[i]))
}
var send_obj = {
"_id": new_arr
};
job_applications.updateMany(
send_obj
,
{
$set: {"application_status": "rejected"}
}, function (err, results) {
console.log(results);
console.log(err);
if (!err) {
console.log('success with reject');
res.sendStatus(200);
}
}
);

我发现这个问题的唯一解决方案是将每个对象的多个 updateOne() 请求发送到 MongoDB,但这非常低效。我相信必须有一个更有效的解决方案来解决这个问题。非常感谢任何帮助/指导。

最佳答案

您已接近第二个,但您需要使用 $in查询运算符以将 _id 与可能值的数组进行匹配:

var new_arr = [];
for (var i = 0; i < req.body.length; i++) {
new_arr.push(new mongodb.ObjectID(req.body[i]))
}
job_applications.updateMany({_id: {$in: new_arr}}, ...);

关于node.js - 使用 Node.js 通过其唯一 _id 更新多个 MongoDB 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34779962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com