chichi
chichi

Reputation: 3292

How to update specific object inside the array?

I have a data that looks like below in MongoDB

{
_id: aasdfeasfeasdf,
todo: [
         {_todoIde: 333, _with: []},
         {_todoIde: 111, _with: []},
      ]
}

I want to $addToSet value to _todoIde: 333's _with like {_todoIde: 333, _with: [aaaa]},. How can I do it?

.updateOne(
   {_id},
   { $addToSet: {}}
)

I got to the document but I can't specify that _todoIde: 333 to update just that one.

Upvotes: 0

Views: 31

Answers (2)

turivishal
turivishal

Reputation: 36094

The positional $ operator identifies an element in an array to update without explicitly specifying the position of the element in the array,

.updateOne(
  { _id: "aasdfeasfeasdf", "todo._todoIde": 333 },
  {
    $addToSet: {
      "todo.$._with": "aaaa"
    }
  }
)

Playground

Upvotes: 2

Algo7
Algo7

Reputation: 2166

You have to add an extra condition to specify the todoIde

Try this:


db.collection.update(
            {$and:[{_id: typeId},{'todo._todoIde': 333}]},
            {$set: { "todo._todoIde.$._with":[a,b,c]}},
        );

Upvotes: 1

Related Questions