javascript - Mongodb 查询 vs JavaScript 数组方法性能
问题描述
做简单的更新任务或过滤任务应该使用哪些?对于此处显示的简单任务,我应该使用 Js Array 方法还是 mongodb 查询?
我需要一个解释。
try {
let subCategory= await SubCategory.findById(req.params.subId);
let previousSlug= subCategory.slug;
let product= await Product.find({subCatSlug:previousSlug});
product.forEach(el=>{
el.subCatSlug=req.body.slug;
el.subCatName=req.body.name;
el.save();
})
subCategory= await SubCategory.findByIdAndUpdate(req.params.subId,req.body,{
new: true,
runValidators: true
})
res.json({
data:subCategory,
message:"Sub category is updated!"
})
}
或者:这里Id
是从body传递来更新数据的
try {
const newData = req.body;
const oldSubCategory = await SubCategory.findOne({_id: newData._id});
await SubCategory.findByIdAndUpdate(req.body._id, req.body ,{
new: true,
runValidators: true
})
if(oldSubCategory.slug !== newData.slug || oldSubCategory.subCatName.trim() !== newData.subCatName.trim()){
await Product.updateMany({subCatSlug:previousSlug}, {$set: {subCatSlug: req.body.slug, subCatName: req.body.subCatName}});
}
res.json({
message: "Sub category is updated"
})
} catch (error) {
if (!err.statusCode) {
err.statusCode = 500;
err.message = 'Something went wrong on database operation!'
}
next(err);
}
}
解决方案
updateMany()
总是比使用该save()
方法一次更新一个文档要快。另外,我建议您使用for of
循环,以防您被迫一次更新一个文档,因为此循环允许使用其中的await
内部。
推荐阅读
- mysql - 查询不返回前几个月的数据,如果为空则为零
- qt - 带有 HERE 插件的 Qt Qml Map 如何正确使用 here.token 进行身份验证
- json - 为什么 IATA 选择 XML 而不是 JSON 来提供 NDC 服务?
- jenkins - Jenkins 在同一个存储库中构建多个项目
- sql - 红移模式匹配
- c++ - 没有调用构造函数?
- javascript - 如何在 React Native 的类 Component 中将函数作为道具传递和执行?
- flutter - 如何从 Flutter 中使用 Firestore 中的唯一文档 ID 进行查询?
- oauth - 有没有办法为 botframework 中的 SingleSignOn (SSO) 生成令牌以访问同一租户下的多个资源
- c# - 如果 nuget 已作为 nuget 依赖项安装,但它在您的项目中不可见,如何安装它?