【发布时间】:2022-01-17 23:49:42
【问题描述】:
是否可以通过替换字段(文档)数组使用 MongoDB 批量更新(更新插入)文档数组?
基本上摆脱了这个伪代码示例中的for循环:
for user in users {
db.users.replaceOne(
{ "name" : user.name },
user,
{ "upsert": true }
}
updateMany 文档仅记录以下所有文档都以相同方式更新的情况:
db.collection.updateMany(
<query>,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
我正在尝试更新(更新)一组文档,其中每个文档都有自己的一组替换字段:
updateOptions := options.UpdateOptions{}
updateOptions.SetUpsert(true)
updateOptions.SetBypassDocumentValidation(false)
_, error := collection.Col.UpdateMany(ctx, bson.M{"name": bson.M{"$in": names}}, bson.M{"$set": users}, &updateOptions)
其中 users 是一个文档数组:
[
{ "name": "A", ...further fields},
{ "name": "B", ...further fields},
...
]
显然,$set 不能用于这种情况,因为我收到以下错误:批量写入时出错 *v1.UserCollection (FailedToParse) 修饰符对字段进行操作,但我们找到了类型数组。
非常感谢任何帮助!
【问题讨论】:
标签: arrays mongodb go mongo-go