我像这样的结构存储
type Test struct {
Key string
Tags []string
}
在mongodb中,然后我想更新标签添加一些其他标签,我找到了$pushAll,但我无法如何使用它。
我试试
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$set": bson.M{"tags": bson.M{"$pushAll": tags}}}
)
但它的错误。
答案 0 :(得分:5)
$set
和$push
以及$pushAll
等运算符定义了语句“更新”部分的操作。这些是“顶级”运算符,因此您可以在update语句的“根”级别定义它们,并将字段作为子级进行操作:
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$pushAll": bson.M{"tags": tags}}
)
从MongoDB 2.6开始,虽然$pushAll
运算符被认为已弃用。该功能已与$each
修饰符合并,该修饰符也适用于$addToSet
:
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$push": bson.M{"tags": bsonM.{"$each": tags} }}
)
从MongoDB 2.4开始,运算符可用于$push
,其中最新版本的差异是省略了$slice
修饰符,这在早期版本中也是必需的。除非您需要支持旧版本,否则通常建议使用$each
修饰符来代替以后的兼容性。