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