仅当值不在数组中时,$addToSet
operator才会将值添加到数组中。如果该值在数组中,则$addToSet
不修改该数组。
我想插入两个值,这两个值不应该通过一个请求重复。这个是可能的吗?
我试图将一个数组传递给$addToSet
操作符,但它插入了一个数组,而不是该数组中的每个值。
$ mongo test
MongoDB shell version: 2.4.9
connecting to: test
> db.c.insert({a: [1, 2, 3]})
> db.c.find()
{ "_id" : ObjectId("53511a255a82cd559393d840"), "a" : [ 1, 2, 3 ] }
> db.c.update({}, {$addToSet: {a: [2, 4]}})
> db.c.find()
{ "_id" : ObjectId("53511a255a82cd559393d840"), "a" : [ 1, 2, 3, [ 2, 4 ] ] }
发布于 2014-04-18 12:36:58
如果值是数组,则
$addToSet
将整个数组追加为单个元素。要单独添加值的每个元素,请使用带有$each
修饰符的$addToSet
。有关详细信息,请参见修改器。
因此,您应该使用下面的代码:
db.c.update({}, {$addToSet: {a: {$each: [2, 4]}}})
发布于 2014-04-18 12:37:46
是啊。但是您需要在语句中添加$each
修饰符:
db.c.update({},{ $addToSet: { a: {$each: [ 2, 4 ] } } })
结果是:
{ "a" : [ 1, 2, 3, 4 ] }
https://stackoverflow.com/questions/23154217
复制