sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb opdateringsoperation inde i underarray

Du ønsker ikke at bruge $set her, men $pull (se dokumenter ), og mens du kunne brug $elemMatch for yderligere at specificere din forespørgsel, behøver du ikke.

Følgende vil trække alle tilføjelsesvenner med {"sender": "safari"} fra underarrayet af dokumenter, der matcher {"username": "amitverma"}

db.yourcollection.update({"username": "amitverma"}, { 
  $pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})

Med hensyn til din kommentar, hvis du ville opdatere et bestemt element, ville du det brug $set i kombination med $elemMatch og positionsoperatøren $ . For dit eksempel, noget som:

db.yourcollection.update({
  "username": "amitverma", 
  "notifications.notifications_add_friend": {
    $elemMatch: {"sender": "safari"}
  }
}, {
  $set: {
    "notifications.notifications_add_friend.$.isUnread": false
  }
})



  1. oprette og opdatere flere MongoDB-dokumenter i et opkald

  2. $in mongoDB operator med _id i perl

  3. MongoDB $filter

  4. Få en tydelig aggregering af et matrixfelt på tværs af indekser