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>: <addition> } } );

Here, $addToSet appends <addition> to the array stored in <field> that includes the element <value>, only if <addition> is not already a member of this array.


$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


←   $ (query) $pop  →