概要
MongoDBで、複数の値のいずれかに該当するドキュメントを取得する$inオペレーターがあります。今回はmongo-go-driverで $in
を使いたい時に、どうすれば良いかを書きます。
対応
How to use the elements of a slice in bson.A using mongo-go-driver 0.2.0の記事にある通り、$in
に続く配列の値をbson.A
型にして設定します。こちらのドキュメントにある通り、bson.A
はクエリの中で配列を扱う型になります。
実装サンプル
クエリの設定部分のみサンプルとして記載します。コレクション取得までの記載は割愛しますので、詳細は@yotahada-nus3さんのmongoDB公式のGoのDriverを使ってみたの記事をご参考ください。内容としては、絞り込みたい「_id」の内容を保持したsliceを、bson.A型に詰め替えてクエリに設定します。
sample.go
func SampleGetByIDs(ids []string) error {
// コレクションの取得処理は割愛・・・
idBsonA := bson.A{}
for _, id := range ids {
idBsonA = append(idBsonA, id)
}
filter := bson.D{{Key: "_id", Value: bson.D{{Key: "$in", Value: idBsonA}}}}
cur, err := col.Find(context.Background(), filter)
// curの取得処理は割愛・・・
}