UpdateOne,ReplaceOne,FindOneAndReplace-模式匹配,但没有更新数据

I'm Using Mongo Go Adapter: github.com/mongodb/mongo-go-driver/

I'm trying different patterns but none of them working for me.

//ref struct

type userbase struct {
    Name  string `bosn:"Name"`
    Coins int    `bson:"Coins"`
}

//ref code, it's updating _id, but not updating a value

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 filters that i also used

update := bson.D{{"$inc", bson.D{{"Coins", 1},}},}

//simple ways was tryed also

update := &userbase{name, amount} //should i try *userbase{} ?

//Also i'm tryed

ReplaceOne() 
FindOneAndReplace()
FindOneAndUpdate()

it's hard to dig deeper b-cuz of luck of actual documentation: https://docs.mongodb.com/ecosystem/drivers/go/

Thanks @Wan Bachtiar for answering this in official MongoDB-go-adapter group.

By default queries in MongoDB is case sensitive on the field name. In your struct you defined the field to be Name, but in your filter to specify name. This would result in no documents matching the query predicates for the the update operation. For example, if you have a document as below:

{ "_id": ObjectId("..."), "Name": "Dinamis", "Coins": 1 }

You can perform an update to increment the number of Coins using below snippet:

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)

Also, note that you have a typo on the bson tag in your struct. It’s supposed to be bson:"Name" not bosn:"Name". You may find Query Documents as a useful reference (Select the Go tab to show examples in Go)

Regards, Wan.