добавьте адреса электронной почты в строку mongodb, используя mongoose - PullRequest
0 голосов
/ 23 января 2020

В моей коллекции есть столбец с именем email, который содержит адрес электронной почты. Теперь мне нужно обновить все эти адреса электронной почты, добавив _01 в конце письма (до @). В основном, если адрес электронной почты ipman@gmail.com, его следует преобразовать в ipman_01@gmail.com. Я знаю, что мы можем использовать updateMany для обновления нескольких документов, используя mon goose, но для достижения того, что мне нужно, я считаю, что мне тоже нужно использовать какое-то регулярное выражение?

1 Ответ

1 голос
/ 24 января 2020

Пожалуйста, попробуйте это:

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 ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...