Advertisement
shopnilSS

update element triple or double nested array element field

May 15th, 2021 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //my data
  2. {
  3.     "_id" : ObjectId("57c3d5b3d364e624b4470dfb"),
  4.     "workout" : [
  5.         {
  6.             "workOutId" : "WORK222",
  7.             "exercise" : [
  8.                 {
  9.                     "exerciseId" : "EX21",
  10.                     "state" : [
  11.                         {
  12.                             "rep" : "115",
  13.                             "weight" : "400"
  14.                         }
  15.                     ]
  16.                 },
  17.                 {
  18.                     "exerciseId" : "EX22",
  19.                     "state" : [
  20.                         {
  21.                             "rep" : "120",
  22.                             "weight" : "250"
  23.                         }
  24.                     ]
  25.                 }
  26.             ]
  27.         },
  28.         {
  29.             "workOutId" : "WORK123",
  30.             "exercise" : [
  31.                 {
  32.                     "exerciseId" : "EX41",
  33.                     "state" : [
  34.                         {
  35.                             "rep" : "150",
  36.                             "weight" : "200"
  37.                         }
  38.                     ]
  39.                 },
  40.                 {
  41.                     "exerciseId" : "EX55",
  42.                     "state" : [
  43.                         {
  44.                             "rep" : "110",
  45.                             "weight" : "250"
  46.                         }
  47.                     ]
  48.                 }
  49.             ]
  50.         }
  51.     ]
  52. }
  53.  
  54. //change the state[] array element filed where "rep" = 115 and change the "weight" = 600?
  55. //with elemMatch
  56. /* db.getCollection('random').update(
  57.     {
  58.         "workout.exercise.state":{
  59.                     $elemMatch: {
  60.                             "rep": "115"
  61.                         }
  62.             } //query the exact array element
  63.     }, //querry,
  64.     {
  65.         $set: {
  66.                 "workout.$[i].exercise.$[j].state.$.weight": "600" //update the value
  67.             }
  68.      }, //update,
  69.     {
  70.         arrayFilters: [
  71.                 {
  72.                     "i.workOutId": "WORK222" // querry the workout[] array with the element
  73.                  },
  74.                  {
  75.                     "j.exerciseId": "EX21" //querry the exercise[] array with the element
  76.                   }
  77.             ]
  78.      } //option
  79. )*/
  80.  
  81. //Without elemMatch with $[<identyfier>]
  82. /*
  83. db.getCollection('random').update(
  84.     {//empty} //querry
  85.     {
  86.         $set: {
  87.                 "workout.$[i].exercise.$[j].state.$[k].weight": "500"
  88.             }
  89.      }, //update,
  90.     {
  91.         arrayFilters: [
  92.                 {
  93.                     "i.workOutId": "WORK222" //querry the workout[] array
  94.                  },
  95.                  {
  96.                     "j.exerciseId": "EX21" //querry the exercise[] array
  97.                   },
  98.                   {
  99.                     "k.rep": "115" //queery the state[] array
  100.                    }
  101.             ]
  102.      } //option
  103. )
  104. */
  105.  
  106. /*update all array filed base on eleMatch*/
  107. /*db.getCollection('random').update(
  108.     {
  109.         "workout.exercise.state": {
  110.               $elemMatch : {
  111.                     rep: "110"
  112.                   }
  113.         },
  114.      },
  115.      {
  116.         $set: {
  117.                 "workout.$[].exercise.$[].state.$.weight": "250"
  118.             }
  119.      }
  120. )*/
  121.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement