mongo-go-driver を使用した MongoDB ドキュメントのフィールドのフィルタリング
MongoDB クエリの重要な機能の 1 つは、フィールドをフィルタリングする機能です。クエリ結果で返されます。これは、フィールド投影として知られています。
フィールド投影によるクエリ
mongo-go-driver には、フィールド投影を指定するためのいくつかのオプションが用意されています。 1 つのオプションは、findopt.Projection 関数を使用することです。ただし、経験したように、射影構造体のフィールド名がエクスポートされていない場合、このアプローチは失敗する可能性があります。この問題に対処するには、次の戦略を使用できます。
方法 1: エクスポートされたフィールド名を使用する
最も簡単なアプローチは、エクスポートされたフィールド名を使用することです (つまり、大文字で始まるフィールド) をプロジェクション構造体に含めます。これにより、mongo-go-driver がフィールド名にアクセスできるようになります。
type Fields struct { ID int `bson:"_id"` } projection := Fields{ ID: 0, }
方法 2: 構造体タグを使用する
代わりに、構造体タグを使用することもできます。未エクスポートのフィールド名を対応する MongoDB フィールドにマッピングします。 names.
type Fields struct { _id int `bson:"_id"` } projection := Fields{ _id: 0, }
クエリでの射影の使用
射影を定義したら、SetProjection を設定することで FindOne メソッドまたは Find メソッドでそれを使用できます。 option.
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) result := staCon.collection.FindOne(nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
使用例bson.M
mongo-go-driver の新しいバージョンでは、単純な bson.M マップを使用して投影を指定することもできます。
options.FindOne().SetProjection(bson.M{"_id": 0})
以上がmongo-go-driver を使用して MongoDB フィールドを効果的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。