【问题标题】:prepend email addresses with string in mongodb collection using mongoose使用 mongoose 在 mongodb 集合中添加带有字符串的电子邮件地址
【发布时间】:2020-05-10 00:53:37
【问题描述】:

我的收藏有一个名为 email 的列,其中包含电子邮件地址。现在我需要更新所有这些电子邮件地址,在电子邮件末尾(@ 之前)附加 _01。基本上如果邮箱是ipman@gmail.com,应该转换成ipman_01@gmail.com。我知道我们可以使用 updateMany 来使用 mongoose 更新多个文档,但是为了实现我所需要的,我相信我也需要使用某种正则表达式?

【问题讨论】:

  • 你的 mongoDB 版本是多少?
  • @srinivasy 现在是 4.0.7
  • 你的数据集有多大?
  • 集合大小只有 1.6k 左右,但我想将这些应用于集合中的选定数据集(只有 63 条记录),我将在 Array 中使用查找
  • 对不起,我被另一项任务困住了。我今天将测试你的代码并相应地通知你 k。感谢您的帮助

标签: mongodb mongoose


【解决方案1】:

请试试这个:

let emails = ['ipman@gmail.com', 'ipman2@gmail.com']

let bulkArr = [];
for (const i of emails) {
    let newEmail = i.split("@");
    newEmail = newEmail[0] + '_01' + '@' + newEmail[1]
    bulkArr.push({
        updateOne: {
            "filter": { email : i },
            "update": { '$set': { email : newEmail } }
        }
    })
}

let updateResult = await MongooseModel.bulkWrite( bulkArr, { ordered : false }) 
/** Passing { ordered : false } to make sure update op doesn't fail if updating one document in the middle fails, Also bulkWrite returns write result check documentation for more info */
console.log('matchedCount ::', updateResult.matchedCount, 'modifiedCount ::', updateResult.modifiedCount)

参考: .bulkWrite()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多