避免在mongoose insertMany()

时间:2017-09-12 08:47:50

标签: node.js mongodb mongoose

该问题被错误地标记为重复。这是一个不同的情况。

我有一个包含大约27000个用户的数据库。我想从csv文件中插入更多用户。基本上每个用户可以通过电子邮件Id唯一标识。我想再向数据库输入43000封这样的电子邮件。我打算用

Users.insertMany(emailArray,options,callback)

我希望如果电子邮件ID已经存在,则不应该将记录输入数据库。检查数据库中的每个电子邮件ID并单独更新似乎效率低下。 insertMany似乎更快。我可以使用insertMany吗?

当前方法::

csv()
    .fromFile(path)
    .on('json', (jsonObj) => {
    var email = jsonObj.email;
    delete jsonObj.email;
    var profile = jsonObj;
    User.addEmails(email, profile, function (err, res) {
        if (err == "User already exists") {
            console.log("user already exists");
            } else {
            console.log(res);
            }
        })
    })
    .on('done', (error) => {
        console.log('end');
        fs.unlink(path);
        callback(null, "Done");
    })

添加电子邮件功能

module.addEmails = function(email, profile, callback){
    User.findOne({email: email}, function(err, res){
        if(err)
            throw err;
        else if(res){
            callback("User already exists");
        }
        else{
            User.create({email: email, profile: profile},callback);             
        }
    })
}

0 个答案:

没有答案