Golang mgo クエリの空のオブジェクト
提供されたコードでは、col.Find(bson.M) を使用して特定のユーザーの MongoDB をクエリするときに、 {"user": username}).One(&user)、ユーザー構造体は空のオブジェクトとして初期化されます。これは、ユーザー構造体のフィールドがエクスポートされず、mgo パッケージがフィールドを無視するために発生します。
エクスポートされたフィールドを使用した解決策
この問題を解決するには、次のようにします。ユーザー構造体のフィールドをエクスポートする必要があります。デフォルトでは、MongoDB からフィールドにアクセスするときにフィールド名が使用されます。ただし、タグを使用してカスタム フィールド マッピングを指定できます。
エクスポートされたフィールドとタグを含む変更された構造体は次のとおりです。
type users struct { User string `bson:"user" json:"user"` Data string `bson:"data" json:"data"` }
これで、ユーザー構造体のフィールドが正しくエクスポートされ、クエリは期待どおりの結果を返します。
BSON と JSON に関する追加の注意事項タグ:
bson タグと json タグは、Go 構造体フィールドを MongoDB ドキュメントと JSON データにそれぞれマップする方法を指定するために使用されます。 bson タグは BSON ドキュメント内のフィールド名を指定し、json タグは JSON データ内のフィールド名を指定します。
タグを指定しない場合、デフォルトで構造体のフィールド名が使用されます。ただし、タグを使用すると、他のシステムや規則との互換性を保つためにフィールド名をカスタマイズできます。
以上がGolang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。