You can specify the way that the Go Driver converts Go structs to BSON by using struct tags.
Example
The following code declares a struct of type BlogPost
. This struct
contains a struct tag that maps the WordCount
field to the BSON
field name word_count
. By default, the driver marshals the other
fields as the lowercase of the struct field name:
type BlogPost struct { Title string Author string WordCount int `bson:"word_count"` LastUpdated time.Time Tags []string }
The following example creates a BlogPost
instance and inserts it
into the posts
collection. During the insert operation, the driver
interprets the struct tag to marshal the WordCount
struct field as word_count
:
coll := client.Database("sample_training").Collection("posts") post := BlogPost{ Title: "Annuals vs. Perennials?", Author: "Sam Lee", WordCount: 682, LastUpdated: time.Now(), Tags: []string{"seasons", "gardening", "flower"}, } // Inserts a document describing a blog post into the collection _, err = coll.InsertOne(context.TODO(), post) if err != nil { panic(err) }
View a fully runnable example.
Expected Result
After you run the full example, you can find the following document
in the posts
collection:
{ "_id" : ObjectId("..."), "title" : "Annuals vs. Perennials?", "author" : "Sam Lee", "word_count" : 682, "lastupdated": ..., "tags" : ["seasons", "gardening", "flower"] }
For an example on how to find a document, see the Find Documents guide.
Additional Information
To learn more about using struct tags, converting to/from BSON, and handling potential errors, see the Work with BSON guide.