'how to change the data of multiple array of object in mongodb

data

{
    "_id" : ObjectId("6225fa108c3186fb762d562c"),
    "__v" : 0,
    "createdAt" : ISODate("2022-03-07T12:26:56.538Z"),
    "pm" : {
        "trackOfBreakdown" : [ 
            {
                "r" : 1,
                "c" : 1,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656016526.0,
                "_id" : ObjectId("6225fa10e0e0a55548e9ee71")
            }, 
            {
                "r" : 1,
                "c" : 28,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656022307.0,
                "_id" : ObjectId("6225fa16e0e0a55548e9ee74")
            }, 
            {
                "r" : 4,
                "c" : 1,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656332600.0,
                "_id" : ObjectId("6225fb4ce0e0a55548e9ee89")
            }, 
            {
                "r" : 1,
                "c" : 10,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656337524.0,
                "_id" : ObjectId("6225fb51e0e0a55548e9ee8c")
            }, 
            {
                "r" : 1,
                "c" : 11,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656342041.0,
                "_id" : ObjectId("6225fb56e0e0a55548e9ee8f")
            }, 
            {
                "r" : 1,
                "c" : 32,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656356615.0,
                "_id" : ObjectId("6225fb64e0e0a55548e9ee94")
            }, 
            {
                "r" : 3,
                "c" : 5,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656450293.0,
                "_id" : ObjectId("6225fbc2e0e0a55548e9ee9e")
            }, 
            {
                "r" : 3,
                "c" : 10,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656455202.0,
                "_id" : ObjectId("6225fbc7e0e0a55548e9eea1")
            }, 
            {
                "r" : 4,
                "c" : 17,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656458428.0,
                "_id" : ObjectId("6225fbcae0e0a55548e9eea4")
            }, 
            {
                "r" : 4,
                "c" : 31,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656484350.0,
                "_id" : ObjectId("6225fbe4e0e0a55548e9eea9")
            }, 
            {
                "r" : 1,
                "c" : 29,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656529662.0,
                "_id" : ObjectId("6225fc11e0e0a55548e9eeae")
            }, 
            {
                "r" : 1,
                "c" : 14,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656770018.0,
                "_id" : ObjectId("6225fd026c098920849389fb")
            }, 
            {
                "r" : 1,
                "c" : 16,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646656772807.0,
                "_id" : ObjectId("6225fd046c098920849389fe")
            }, 
            {
                "r" : 1,
                "c" : 19,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646656775777.0,
                "_id" : ObjectId("6225fd076c09892084938a01")
            }, 
            {
                "r" : 1,
                "c" : 34,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656778952.0,
                "_id" : ObjectId("6225fd0a6c09892084938a04")
            }, 
            {
                "r" : 4,
                "c" : 21,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656850045.0,
                "_id" : ObjectId("6225fd5233d2560ca0e3b79e")
            }, 
            {
                "r" : 3,
                "c" : 21,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646656852880.0,
                "_id" : ObjectId("6225fd5433d2560ca0e3b7a1")
            }, 
            {
                "r" : 3,
                "c" : 24,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646656855582.0,
                "_id" : ObjectId("6225fd5733d2560ca0e3b7a4")
            }, 
            {
                "r" : 3,
                "c" : 29,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646656997927.0,
                "_id" : ObjectId("6225fde75128bd3ea08e66ee")
            }, 
            {
                "r" : 3,
                "c" : 31,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646657002122.0,
                "_id" : ObjectId("6225fdea5128bd3ea08e66f1")
            }, 
            {
                "r" : 3,
                "c" : 41,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646657004121.0,
                "_id" : ObjectId("6225fdec5128bd3ea08e66f4")
            }, 
            {
                "r" : 2,
                "c" : 35,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646657006449.0,
                "_id" : ObjectId("6225fdee5128bd3ea08e66f7")
            }, 
            {
                "r" : 2,
                "c" : 28,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646657015240.0,
                "_id" : ObjectId("6225fdf75128bd3ea08e66fe")
            }, 
            {
                "r" : 3,
                "c" : 16,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646657028648.0,
                "_id" : ObjectId("6225fe075128bd3ea08e6703")
            }, 
            {
                "r" : 2,
                "c" : 24,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646835294639.0,
                "_id" : ObjectId("6228b65e015cb12e74a36cdb")
            }, 
            {
                "r" : 2,
                "c" : 10,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646835504875.0,
                "_id" : ObjectId("6228b730015cb12e74a36cf2")
            }, 
            {
                "r" : 4,
                "c" : 4,
                "val" : false,
                "status" : "Pending",
                "dateMonthYear" : 1646997530576.0,
                "_id" : ObjectId("622b301a10881d13806448d0")
            }, 
            {
                "r" : 4,
                "c" : 4,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646997531969.0,
                "_id" : ObjectId("622b301b10881d13806448d2")
            }, 
            {
                "r" : 4,
                "c" : 4,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646997532149.0,
                "_id" : ObjectId("622b301c10881d13806448d4")
            }, 
            {
                "r" : 4,
                "c" : 4,
                "val" : true,
                "status" : "Pending",
                "dateMonthYear" : 1646997533186.0,
                "_id" : ObjectId("622b301d10881d13806448d6")
            }
        ],
        "checkList" : [ 
            {
                "ch_id" : "621eff4e0ed5c751adaa42fb",
                "val" : "Gopi",
                "remarks" : "Manoj",
                "dateMonthYear" : 1646591400000.0,
                "eid" : "07",
                "status" : "Pending",
                "_id" : ObjectId("6225fa30e0e0a55548e9ee77")
            }, 
            {
                "ch_id" : "621effab0ed5c751adaa42fd",
                "val" : "Pradeep",
                "remarks" : "Shetty",
                "dateMonthYear" : 1646591400000.0,
                "eid" : "07",
                "status" : "Pending",
                "_id" : ObjectId("6225fa30e0e0a55548e9ee79")
            }, 
            {
                "ch_id" : "621effd30ed5c751adaa42ff",
                "val" : "Arun",
                "remarks" : "Sri",
                "dateMonthYear" : 1646591400000.0,
                "eid" : "07",
                "status" : "Pending",
                "_id" : ObjectId("6225fa30e0e0a55548e9ee7b")
            }, 
            {
                "ch_id" : "621efff30ed5c751adaa4301",
                "val" : "Manju",
                "remarks" : "Maari",
                "dateMonthYear" : 1646591400000.0,
                "eid" : "07",
                "status" : "Pending",
                "_id" : ObjectId("6225fa30e0e0a55548e9ee7d")
            }
        ],
        "sparespm1" : [ 
            {
                "date" : "2022-03-04",
                "partDescription" : "gopi",
                "partNo" : "hai",
                "qty" : "52",
                "dateMonthYear" : 1646982057447.0,
                "status" : "Pending",
                "eid" : "07",
                "cellId" : "1",
                "_id" : ObjectId("622af3b6e9044d702c75b6fb")
            }, 
            {
                "date" : "2022-03-01",
                "partDescription" : "dddd",
                "partNo" : "ww",
                "qty" : "er",
                "dateMonthYear" : 1646982069153.0,
                "status" : "Pending",
                "eid" : "07",
                "cellId" : "1",
                "_id" : ObjectId("622af3b6e9044d702c75b6fd")
            }, 
            {
                "date" : "2022-03-30",
                "partDescription" : "Manoj",
                "partNo" : "Shetty",
                "qty" : "Hi",
                "dateMonthYear" : 1648606373653.0,
                "status" : "Pending",
                "eid" : "07",
                "cellId" : "1",
                "_id" : ObjectId("6243bca9e736110684220890")
            }
        ],
        "machineDetails" : [ 
            {
                "machineName" : "hvhh",
                "machineNo" : "2563154",
                "dateMonthYear" : 1646999495640.0,
                "eid" : "07",
                "cellId" : "1",
                "_id" : ObjectId("622b37c910881d13806448ed")
            }
        ]
    },
    "updatedAt" : ISODate("2022-03-30T02:12:57.036Z")
}

In the above collection, I'll be having only one single document. And within that document, I need to update all statuses within arrays as "Approved", with respect to greater than or equal to starting day of the year and lesser than or equal to ending day of the year(it should compare respective dateMonthYear key) Thank You



Solution 1:[1]

Use $[<identifier>]

db.collection.update({
  _id: ObjectId("6225fa108c3186fb762d562c")
},
{
  $set: {
    "pm.trackOfBreakdown.$[x1].status": "Approved",
    "pm.checkList.$[x2].status": "Approved",
    "pm.sparespm1.$[x3].status": "Approved",
    "pm.machineDetails.$[x4].status": "Approved"
  }
},
{
  arrayFilters: [
    {
      "x1.dateMonthYear": {
        $gte: {
          $toLong: {
            $dateTrunc: {
              date: "$$NOW",
              unit: "year"
            }
          }
        },
        $lte: {
          $toLong: {
            $dateTrunc: {
              date: {
                $dateAdd: {
                  startDate: "$$NOW",
                  unit: "year",
                  amount: 1
                }
              },
              unit: "year"
            }
          }
        }
      }
    },
    {
      "x2.dateMonthYear": {
        $gte: {
          $toLong: {
            $dateTrunc: {
              date: "$$NOW",
              unit: "year"
            }
          }
        },
        $lte: {
          $toLong: {
            $dateTrunc: {
              date: {
                $dateAdd: {
                  startDate: "$$NOW",
                  unit: "year",
                  amount: 1
                }
              },
              unit: "year"
            }
          }
        }
      }
    },
    {
      "x3.dateMonthYear": {
        $gte: {
          $toLong: {
            $dateTrunc: {
              date: "$$NOW",
              unit: "year"
            }
          }
        },
        $lte: {
          $toLong: {
            $dateTrunc: {
              date: {
                $dateAdd: {
                  startDate: "$$NOW",
                  unit: "year",
                  amount: 1
                }
              },
              unit: "year"
            }
          }
        }
      }
    },
    {
      "x4.dateMonthYear": {
        $gte: {
          $toLong: {
            $dateTrunc: {
              date: "$$NOW",
              unit: "year"
            }
          }
        },
        $lte: {
          $toLong: {
            $dateTrunc: {
              date: {
                $dateAdd: {
                  startDate: "$$NOW",
                  unit: "year",
                  amount: 1
                }
              },
              unit: "year"
            }
          }
        }
      }
    }
  ],
  multi: true
})

mongoplayground

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1