我需要使用官方的Go MongoDB驱动程序进行addToSet
操作。
在MongoDB中,我们有一些文档:
{ _id: 2, item: "cable", tags: [ "electronics", "supplies" ] }
然后执行
addToSet
:db.inventory.update(
{ _id: 2 },
{ $addToSet: { tags: { $each: [ "camera", "electronics", "accessories" ] } } }
)
结果:
{
_id: 2,
item: "cable",
tags: [ "electronics", "supplies", "camera", "accessories" ]
}
最佳答案
$addToSet
是更新操作,如果要更新单个文档,则可以使用 Collection.UpdateOne()
方法。
使用 bson.M
和/或 bson.D
类型描述您的过滤器并更新文档。
例如:
update := bson.M{
"$addToSet": bson.M{
"tags": bson.M{"$each": []string{"camera", "electronics", "accessories"}},
},
}
res, err := c.UpdateOne(ctx, bson.M{"_id": 2}, update)
这是一个完整的,可运行的应用程序,它连接到MongoDB服务器并执行上述更新操作:
ctx := context.Background()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost"))
if err != nil {
panic(err)
}
defer client.Disconnect(ctx)
c := client.Database("dbname").Collection("inventory")
update := bson.M{
"$addToSet": bson.M{
"tags": bson.M{"$each": []string{"camera", "electronics", "accessories"}},
},
}
res, err := c.UpdateOne(ctx, bson.M{"_id": 2}, update)
if err != nil {
panic(err)
}
fmt.Printf("%+v", res)
关于mongodb - 如何使用Go官方驱动程序执行addToSet?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57586592/