gpt4 book ai didi

go - 如何使用 MongoDB 的 Go 驱动程序 BulkWrite\UpdateMany

转载 作者:IT王子 更新时间:2023-10-29 01:04:04 28 4
gpt4 key购买 nike

我正在从 mgo 驱动程序迁移,我的函数如下所示:

queue := collection.Bulk()
for j := range changes {
..
queue.Update(doc, update)
}
saveResult, err := queue.Run()

这使得一些 $push$set 循环更新到单个文档。我应该如何使用官方驱动程序执行此操作?是 collection.BulkWrite() 还是 collection.UpdateMany() ?文档非常模糊,我不知道如何使用它们以及有什么区别。任何帮助将不胜感激。

最佳答案

对于您的用例,您将使用 collection.BulkWrite。您可以在 examples directory 中找到有关如何使用 go-mongo-driver 的示例存储库的。

collection.UpdateMany() 将使用相同的更新过滤器和修改来更新集合中的多个文档。 docs 中有更多文档相当于 mongo shell。示例:

result, err := coll.UpdateMany(
context.Background(),
bson.NewDocument(
bson.EC.SubDocumentFromElements("qty",
bson.EC.Int32("$lt", 50),
),
),
bson.NewDocument(
bson.EC.SubDocumentFromElements("$set",
bson.EC.String("size.uom", "cm"),
bson.EC.String("status", "P"),
),
bson.EC.SubDocumentFromElements("$currentDate",
bson.EC.Boolean("lastModified", true),
),
),
)

collection.BulkWrite() 将执行一组 bulk write operations . BulkWrite API 仅为 introduced几天前为 go 司机。示例很少,但是您可以随时检查测试 文件。示例:

var operations []mongo.WriteModel

operation := mongo.NewUpdateOneModel()
operation.Filter(bson.NewDocument(
bson.EC.SubDocumentFromElements("qty",
bson.EC.Int32("$lt", 50),
),
))
operation.Update(bson.NewDocument(
bson.EC.SubDocumentFromElements("$set",
bson.EC.String("size.uom", "cm"),
bson.EC.String("status", "P"),
),
bson.EC.SubDocumentFromElements("$currentDate",
bson.EC.Boolean("lastModified", true),
),
))

operations = append(operations, operation)

result, err := coll.BulkWrite(
context.Background(),
operations,
)

关于go - 如何使用 MongoDB 的 Go 驱动程序 BulkWrite\UpdateMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019925/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com