如何改善mongodb的“ upsert”

时间:2019-01-21 10:17:22

标签: node.js mongodb

更新工作非常缓慢,我想对其进行改进

我的mongo数据库中大约有3,000,000个文档。 我使用此代码添加文档

app.post('/addcontacts', (req, res) => {
    const jason = JSON.parse(req.body.body);


    async.eachOfLimit(jason, 30, function(value, index, callback){

        // upsert document, update all or insert if match not found
        myDb.collection('contacts').update(
            { n: value.n, p: value.p }, {n: value.n, p: value.p}, {upsert: true}, function(err){
                console.log("finshed: "+index);
                return callback(err);
        });

    }, function(err){
        // all is finished
        if(err)
        {
            return res.status(500).json({err: err});
        }
        else
        {
            console.log("finshed");
            return res.status(200).json({err: null});
        }
        db.close()
    })
});

工作变得很慢,我如何才能改善它呢?

1 个答案:

答案 0 :(得分:0)

mongodb很快,请尝试改善您的javascript代码。例如使用

  

Promise.all(map())

示例

var promises = [obj1, obj2].map(function(obj){
  return db.query('obj1.id').then(function(results){
     obj1.rows = results
     return obj1
  })
})
Promise.all(promises).then(function(results) {
    console.log(results)
})

我很快就插入了10lac记录。所以我希望这对您有用。