首页 > 解决方案 > 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);
    }
}

标签: javascriptarraysdatabasemongodb

解决方案


updateMany()总是比使用该save()方法一次更新一个文档要快。另外,我建议您使用for of循环,以防您被迫一次更新一个文档,因为此循环允许使用其中的await内部。


推荐阅读