我在 MongoDB 中有一个具有以下结构的集合:
{
"userId": String,
"refs": Set<String>
}
我需要用这些文档更新集合。我想为refsfilter 中的用户添加一个新字符串$in。但是,如果用户不存在,我需要“更新”他。
在代码(golang)中,它看起来像这样:
filter := bson.M{
"userId": bson.M{
"$in:": tokens // tokens is []string
}
}
update := bson.M{
"$addToSet": bson.M{
"refs": newReference
}
}
ctx, _ := newDbOperationContext()
_, err := driver.UpdateMany(ctx, filter, update)
因此,对于现有用户来说它工作正常,添加了参考。但是,对于不存在的用户,什么都不会发生。
我设置了driver.UpdateMany(bson, bson, opts...)opts to options.UpdateOptions.SetUpsert(true)",但结果我得到了一个没有 userId 的文档:
{
"_id": ObjectId("..."),
"refs": ["new_reference"]
}
所以,我的问题是,如何用userId字段更新新值。
规模就像要更新 2*10^6 个用户,所以我想使用批处理请求来做到这一点。我认为,使用“一个一个”创建并更新他不是一个选项。
谢谢你的支持!
LEATH
catspeake
手掌心
相关分类