概要
GolangでMongoDBを使うとなった時に、おそらく使用するのがmongo-go-driverでしょう。mongo-go-driverではこちらのサンプルにある通り、bsonD
という型にクエリの項目を入れていくのですが、この通りに設定していくとprimitive.E composite literal uses unkeyed fields
というワーニングが表示されます。
ワーニングなので、このままにしておいても良いのですが、ワーニングを消すためにどうすれば良いのかというのを今回書きます。
対応
MongoDBの Offical Go言語 Driverを使ってみる(1)準備・Insertの記事によると、bsonD
はprimitive.E
のスライスとして定義されているので、きちんと型を書かないとワーニングが出るみたいです。ちなみに、primitive.EとはドキュメントによるとKeyとValueが定義されている構造体です。
対応としてはComposite literal uses unkeyed fieldsの記事に色々と対応が記載されています。ワーニングを出ない設定にするものや、愚直にprimitive.Eの型で書いていくものなどが挙げられています。ちなみに、primitive.E
の記述は省略できるみたいなので、以下の実装サンプルのように書くのが、個人的に良いかなと感じました。
実装サンプル
findOptions := options.Find()
findOptions.SetSort(bson.D{{Key: "date", Value: 1}})
filter := bson.D{{Key: "status", Value: "on"},
{Key: "date", Value: bson.D{{Key: "$lt", Value: time.Now()}}}}
cur, err := col.Find(context.Background(), filter, findOptions)