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