構造タグを使用する
Go ドライバーが Go 構造体を BSONに変換する方法を指定するには、構造体タグを使用します。
例
Tip
この例の実行方法については、「 の使用例」をお読みください。
次のコードでは、 BlogPost
型の構造体を宣言します。 この構造体には、 WordCount
フィールドを BSON フィールド名word_count
にマッピングする構造体タグが含まれています。 デフォルトでは、ドライバーは他のフィールドを構造体フィールド名の小文字としてマーシャリングします。
type BlogPost struct { Title string Author string WordCount int `bson:"word_count"` LastUpdated time.Time Tags []string }
次の例では、 BlogPost
インスタンスを作成し、それをposts
コレクションに挿入します。 挿入操作中に、ドライバーは struct タグを解釈して、 WordCount
構造体フィールドをword_count
としてマーシャリングします。
Tip
この例を実行する方法については、「使用例」をお読みください。
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) }
期待される結果
完全な例を実行すると、 posts
コレクションに次のドキュメントが見つかります。
{ "_id" : ObjectId("..."), "title" : "Annuals vs. Perennials?", "author" : "Sam Lee", "word_count" : 682, "lastupdated": ..., "tags" : ["seasons", "gardening", "flower"] }
ドキュメントの検索方法の例については、「ドキュメントを検索する」を参照してください。
詳細情報
構造体タグの使用、BSON への変換や BSON からの変換、潜在的なエラーの処理の詳細については、「 BSON との連携 」を参照してください。