$addToSet operator adds a value to an array only if the value is not already in the array. If the value is in the array, $addToSet
does not modify the array.
From the docs for $addToSet:
If the value is an array,
$addToSet
appends the whole array as a single element. To add each element of the value separately, use$addToSet
with the$each
modifier. See Modifiers for details.
So you should use this instead:
db.c.update({}, {$addToSet: {a: {$each: [2, 4]}}})
Yep. But you need the $each
modifier to be added in your statement:
db.c.update({},{ $addToSet: { a: {$each: [ 2, 4 ] } } })
And the result:
{ "a" : [ 1, 2, 3, 4 ] }