Reputation: 3292
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
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"
}
}
)
Upvotes: 2
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