簡體   English   中英

貓鼬| 根據每個文檔中的字段更新所有文檔

[英]mongoose | update all documents according to a field in each document

我有一個收集,我想根據現場email更新所有文檔,並將其轉換為小寫。

const addressBookSchema = new Schema({
    email: String,
});
const addressBook = mongoose.model("address_book", addressBookSchema)

我正在嘗試執行以下操作:

addressBook.update({}, {$set: {email: email.toLowerCase()}}, {multi: true});

但這是行不通的。

如何獲取電子郵件字段並將其設置為小寫?

對於所有文檔,

addressBook.find({}, {email: 1})
    .exec((err, docs) => {
        if (err || docs == undefined || docs.length == 0)
            ;
        else {
            docs.forEach((doc) => {
                 addressBook.findOneAndUpdate({_id: doc._id}, 
                                              {$set: {email: doc.email.lowercase()}})
                 .exec();
            });
       }
    });   

如果數據集如此之大,則應使用bulkWrite()函數

addressBook.bulkWrite([
  {
    updateMany: {
      filter: {},
      update: { email: email.lowercase()}
    }
  },
]).then(handleResult);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM