公式 mongo-go-driver を使用した MongoDB ドキュメントのプロジェクト フィールド
MongoDB ドキュメントのフィールドのフィルタリングは、選択的なデータ取得とパフォーマンスの最適化にとって重要です。これを実現するために、公式の mongo-go-driver は柔軟なオプションを提供します。
問題ステートメント:
findopt.Projection メソッドを使用して、フィールド内のフィールドを抑制しようとします。 MongoDB ドキュメントが失敗しました。フィールド構造体を使用して射影を指定しても、返されたドキュメントではフィールドはそのまま残ります。
解決策:
根本原因:射影に使用されるフィールド構造体は、次のことを行うことができません。フィールド名がエクスポートされていないため、フィールドにアクセスできません。
解決策: 構造体のフィールド名をエクスポートし、構造体タグを使用します。これを対応する MongoDB フィールド (この場合は _id) にマップします。
変更されたコードは次のとおりです:
type fields struct { ID int `bson:"_id"` } s := bson.NewDocument() filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) projection := fields{ ID: 0, } result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
または、bson.Document をプロジェクションとして使用できます:
projection := bson.NewDocument( bson.EC.Int32("_id", 0), ) result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
これらの変更を実装すると、目的のフィールド フィルタリングが実現され、_id フィールドを持つドキュメントが作成されます。抑制されました。
以上がmongo-go-driver を使用して MongoDB ドキュメント内のフィールドを効果的に投影する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。