1
1

More than 3 years have passed since last update.

【Go】mongo-go-driverのFindで特定フィールドのみ取得

Posted at

概要

MongoDBでもRDBのSELECT分同様に、特定のフィールドのみ取得する機能が用意されています。How to select fields in a document in MongoDBの記事にある通り、findメソッドの引数で取得するフィールド名を指定します。
今回はこの操作をmongo-go-driverでどのように実装すれば良いかというのを書きます。

対応

remove a field from mongodb query result in golangの記事にある通り、options.FindOne().SetProjectionのメソッド(複数行取得の場合はFind())に取得フィールドを指定します。指定した内容をFindOneメソッド(複数行取得の場合はFind)に設定します。

実装サンプル

上記記事のほぼコピペですが、コレクションからnameemailのみを抽出するサンプルを記載します。なお、コレクション取得までの接続処理は割愛します。接続処理についてはこちらのドキュメントを参考ください。

sample.go
// コレクション取得までの接続処理は割愛・・
var result bson.M
// filter条件の設定
filter := bson.D{{Key: "_id", Value: ID}}
// 取得するフィールドを絞ってクエリ発行
err := col.FindOne(context.Background(), filter, options.FindOne().SetProjection({
    bson.M{
        "name": 1,
        "email": 1,
    },
)).Decode(&result)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1