我像这样的结构存储
type Test struct {
Key string
Tags []string
}
Run Code Online (Sandbox Code Playgroud)
在mongodb,然后我想更新标签添加一些其他标签,我发现$ pushAll,但我不能如何使用它.
我试试
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$set": bson.M{"tags": bson.M{"$pushAll": tags}}}
)
Run Code Online (Sandbox Code Playgroud)
但这是错误的.
运营商喜欢$set和$push甚至$pushAll定义语句"更新"部分的操作.这些是"顶级"运算符,因此您可以在update语句的"根"级别定义它们,并将字段作为子级进行操作:
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$pushAll": bson.M{"tags": tags}}
)
Run Code Online (Sandbox Code Playgroud)
从MongoDB 2.6开始,虽然$pushAll运营商被认为已被弃用.该功能已与$each修饰符合并,该修饰符也适用于$addToSet:
mongoDb.C("test").Update(
bson.M{"key": key},
bson.M{"$push": bson.M{"tags": bsonM.{"$each": tags} }}
)
Run Code Online (Sandbox Code Playgroud)
从$pushMongoDB 2.4开始,运营商可以使用,其中最新版本的差异是省略$slice了早期版本也需要的修饰符.除非您需要支持旧版本,否则通常建议使用$each修饰符以备将来兼容.
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |