The $addToSet operator adds a value to an array only if the value is not in the array already. If the value is in the array, $addToSet returns without modifying the array. Consider the following example:
db.collection.update( { field: value }, { $addToSet: { field: value1 } } );
Here, $addToSet appends value1 to the array stored in field, only if value1 is not already a member of this array.
Note
$addToSet only ensures that there are no duplicate items added to the set and does not affect existing duplicate elements. $addToSet does not guarantee a particular ordering of elements in the modified set.
Use the $each modifier with the $addToSet operator to add multiple values to an array <field> if the values do not exist in the <field>.
db.collection.update( <query>, { $addToSet: { <field>: { $each: [ <value1>, <value2> ... ] } } } )
See also