我正在使用Mongo Go适配器:github.com/mongodb/mongo-go-driver /
我正在尝试不同的模式,但是没有一个对我有用。
// ref结构
type userbase struct {
Name string `bosn:"Name"`
Coins int `bson:"Coins"`
}
// ref代码,它正在更新_id,但不更新值
filter := bson.M{"name": "Dinamis"}
update := bson.D{{"$inc", bson.M{"Coins": 1}}}
db := Client.Database("Nothing").Collection("dataUser")
db.UpdateOne(context.Background(), filter, update)
//更新我也使用过的过滤器
update := bson.D{{"$inc", bson.D{{"Coins", 1},}},}
//也尝试了简单的方法
update := &userbase{name, amount} //should i try *userbase{} ?
//我也尝试过
ReplaceOne()
FindOneAndReplace()
FindOneAndUpdate()
很难深入了解实际文档的运气:https://docs.mongodb.com/ecosystem/drivers/go/
答案 0 :(得分:0)
感谢@Wan Bachtiar在MongoDB-go-adapter官方小组中回答了这个问题。
默认情况下,MongoDB中的查询对字段名称区分大小写。在 在您的结构中,您将字段定义为名称,但在过滤器中 指定名称。这将导致没有文档与查询匹配 谓词进行更新操作。例如,如果您有一个 文件如下:
{ "_id": ObjectId("..."), "Name": "Dinamis", "Coins": 1 }
您可以使用以下方法执行更新以增加硬币数量 片段:
collection := client.Database("Nothing").Collection("dataUser")
filter := bson.M{"Name": "Dinamis"}
update := bson.D{{"$inc", bson.M{"Coins": 1}}}
result, err := collection.UpdateOne(context.TODO(), filter, update)
此外,请注意,您在结构的bson标记上有错字。它的 应该是bson:“ Name”而不是bosn:“ Name”。您可能会发现查询 文档作为有用的参考(选择“转到”标签以显示示例 去)
问候,万。