ホームページ >バックエンド開発 >Golang >Golang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?

Golang mgo クエリが空のユーザー オブジェクトを返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-16 14:46:15595ブラウズ

Why are my Golang mgo queries returning empty user objects?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。