The
$addToSet operator adds a value to an array only if the value is not already in
the array.
Syntax
{
$addToSet: { <field1>: <value1>, ... } }
> db.sample.find()
{ "_id" : 1, "arr" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] }
{ "_id" : 2, "arr" : [ 9, 8, 7, 6, 5, 4, 3, 2, 1 ] }
{ "_id" : 3, "arr" : [ 19, 6, 14 ] }
{ "_id" : 4, "arr" : [ 3, 6, 5, 104, 302, 161 ] }
{ "_id" : 5, "arr" : [ 1, 6, 5, 5, 4 ] }
>
>
> db.sample.update({"_id":5}, {$addToSet : {"arr" : 5}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
>
> db.sample.find({"_id" : 5})
{ "_id" : 5, "arr" : [ 1, 6, 5, 5, 4 ] }
>
> db.sample.update({"_id":5}, {$addToSet : {"arr" : 2}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.sample.find({"_id" : 5})
{ "_id" : 5, "arr" : [ 1, 6, 5, 5, 4, 2 ] }
Observe
above code sample, addToSet don’t modify document 5 while inserting value 5
(since 5 already exist), but it updated document 5 while inserting value 2
(since 2 not exist).
No comments:
Post a Comment