Empty Objects in Golang mgo Queries
In the provided code, when querying MongoDB for a specific user with col.Find(bson.M{"user": username}).One(&user), the user struct is initialized as an empty object. This occurs because the fields of the users struct are not exported, which leads to the mgo package ignoring them.
Resolution Using Exported Fields
To resolve this issue, you need to export the fields of the users struct. By default, field names are used when accessing fields from MongoDB. However, you can use tags to specify custom field mappings.
Here's the modified struct with exported fields and tags:
type users struct { User string `bson:"user" json:"user"` Data string `bson:"data" json:"data"` }
Now, the fields of the users struct are correctly exported, and queries will return the expected results.
Additional Notes on BSON and JSON Tags:
The bson and json tags are used to specify how Go struct fields are mapped to MongoDB documents and JSON data, respectively. The bson tag specifies the field name in a BSON document, and the json tag specifies the field name in JSON data.
If you don't specify tags, the field name in the struct will be used by default. However, using tags allows you to customize the field names for compatibility with other systems or conventions.
The above is the detailed content of Why are my Golang mgo queries returning empty user objects?. For more information, please follow other related articles on the PHP Chinese website!