MongoDB v4.4 update value for a field based on existing value


I am using mongoose v5.13 on NodeJS

For a document whose id I know

    _id: ...,
    edible: 'fruit'

I want to update this document and do this

if (obj.edible == 'fruit') {
    obj.edible = 'apple';
} else if(obj.edible == 'vegetable') {
    obj.edible = 'carrot';

But this requires me to find first and then update, hence, two queries, my question is can I do it in one operation



  • pipeline update requires >= MongoDB 4.2
  • you have 2 cases only you could use $cond also, but i used $switch so you can add more if needed


{"_id": {"$eq": 1}},
          [{"case": {"$eq": ["$edible", "fruit"]}, "then": "apple"},
            {"case": {"$eq": ["$edible", "vegetable"]}, "then": "carrot"}],
          "default": "unknown"}}}}])

Answered By – Takis _

Answer Checked By – Marilyn (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.