How to use update many in mongoose to loop through 8 elements and put them into an array in that schema

Viewed 41

I have this schema

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,
})

I want to run an updateMany where I put each DesalinationTi into the desalinations array

1 Answers

This is what I used to do this NOTE: DESALINATIONS GOT CHANGED TO ROS I loop through every facility schema and update each one of those

    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");
  });
Related