В вашем случае вы бы использовали collection.BulkWrite
.Вы можете найти примеры использования go-mongo-driver
в каталоге examples хранилища.
collection.UpdateMany()
обновит несколько документов в коллекции, используя один и тот же фильтр обновлений и модификации.В документах эквивалента оболочки Монго намного больше документации.Пример:
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()
выполнит набор операций массовой записи .BulkWrite API был только представлен пару дней назад для драйвера 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,
)