How do I update Array Elements matching criteria in a MongoDB document?

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

I have a document with an array field, similar to this:

{ 
  "_id" : "....",
  "Statuses" : [
    { "Type" : 1, "Timestamp" : ISODate(...) },
    { "Type" : 2, "Timestamp" : ISODate(...) },
    //Etc. etc.
  ]
}

How can I update a specific Status item's Timestamp, by specifying its Type value?

profilepic.png
manpreet 2 years ago

From mongodb shell you can do this by

db.your_collection.update(
    { _id: ObjectId("your_objectid"), "Statuses.Type": com/tag/1">1 },
    { $set: { "Statuses.$.Timestamp": "new timestamp" } }
)

so the c# equivalent

var query = Query.And(
    Query.EQ("_id", "your_doc_id"),
    Query.EQ("Statuses.Type", com/tag/1">1)
);

var result = your_collection.Update( 
    query, 
    Update.Set("Statuses.$.Timestamp", "new timestamp", UpdateFlags.Multi,SafeMode.True)
); 

This will update the specific document, you can remove _id com/tag/filter">filter if you wanted to update the whole collection


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.