我像这个结构一样存储
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}}}
)
但这是错误的。
我像这个结构一样存储
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}}}
)
但这是错误的。
运算符喜欢$set甚至定义语句$push的$pushAll“更新”部分的操作。这些是“顶级”运算符,因此您可以在更新语句的“根”级别定义它们,并在其子项中使用要对其进行操作的字段:
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} }}
)
该运算符可用于$pushMongoDB 2.4,最新版本的不同之处在于省略了$slice早期版本也需要的修饰符。除非您需要支持旧版本,否则通常建议使用$each修饰符来代替将来的兼容性。