使用$ addToSet Mongo运算符添加多个值 [英] Add multiple values using $addToSet Mongo operator

查看:91
本文介绍了使用$ addToSet Mongo运算符添加多个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$addToSet运算符 仅在值尚未在数组中.如果该值在数组中,则$addToSet不会修改该数组.

$addToSet operator adds a value to an array only if the value is not already in the array. If the value is in the array, $addToSet does not modify the array.

我想插入两个不应通过一个请求重复的值.这可能吗?

I want to insert two values that should not be duplicated via one request. Is this possible?

我试图将数组传递给$addToSet运算符,但它插入了一个数组,而不是该数组中的每个值.

I tried to pass an array to $addToSet operator but it inserted an array instead of each value from that array.

$ 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 ] ] }

推荐答案

来自 $addToSet 的文档:

From the docs for $addToSet:

如果值是一个数组,则$addToSet将整个数组附加为 单个元素.要分别添加值的每个元素,请使用 $addToSet$each修饰符.有关详细信息,请参见修饰符.

If the value is an array, $addToSet appends the whole array as a single element. To add each element of the value separately, use $addToSet with the $each modifier. See Modifiers for details.

所以您应该改用它:

db.c.update({}, {$addToSet: {a: {$each: [2, 4]}}})

这篇关于使用$ addToSet Mongo运算符添加多个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆