如何在 mongoose 中使用 update many 来循环遍历 8 个元素并将它们放入该模式中的数组中

Posted

技术标签:

【中文标题】如何在 mongoose 中使用 update many 来循环遍历 8 个元素并将它们放入该模式中的数组中【英文标题】:How to use update many in mongoose to loop through 8 elements and put them into an array in that schema 【发布时间】:2021-12-21 14:11:25 【问题描述】:

我有这个架构

const facilitySchema = new Schema(
    desalinations: [
        Type: Schema.Types.ObjectId,
        // ref: "Desalination"
    ],
    DesalinationT1:String,
    DesalinationT2:String,
    DesalinationT3:String,
    DesalinationT4:String,
    DesalinationT5:String,
    DesalinationT6:String,
    DesalinationT7:String,
    DesalinationT8:String,
)

我想运行一个 updateMany,将每个 DesalinationTi 放入 desalinations 数组中

【问题讨论】:

【参考方案1】:

这是我以前做的 注意:海水淡化已更改为 ROS 我遍历每个设施模式并更新其中的每一个

    let facilitiesReturned = await Facility.find(, (err) => 
      if (err) 
        return res.status(400).json( success: false, error: err );
      
    )
      .clone()
      .catch((e) => console.log(e));

    for (let i = 0; i < facilitiesReturned.length; i++) 
      const ROs = [];
      for (let s = 1; s < 9; s++) 
        const name = `ROT$s`;
        if (facilitiesReturned[i][name]) 
          const RO = facilitiesReturned[i][name];
          ROs.push(RO);
        
      
      Facility.updateOne(
         _id: facilitiesReturned[i]._id ,
        
          // $set:  customers: [] ,
          $addToSet: 
            ROs: 
              $each: [...ROs],
            ,
          ,
        ,
        (err, result) => 
          if (err) 
            console.log(err);
          
        
      ).clone();
    
    console.log("Finished updating");
  );

【讨论】:

以上是关于如何在 mongoose 中使用 update many 来循环遍历 8 个元素并将它们放入该模式中的数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongoose 中使用 update many 来循环遍历 8 个元素并将它们放入该模式中的数组中

Mongoose 4.x“model.update()”回调改变

如何在 mongoose/mongodb 查询子文档中使用 mapreduce?

如何在 mongoose/mongodb 查询子文档中使用 mapreduce?

mongoose update操作属性中的变量

如何使用 mongoose 在 MongoDB 数组中推送数据