简体   繁体   中英

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.

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

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]}},
        );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM