ホームページ  >  記事  >  バックエンド開発  >  mongogo ドライバーでの Mongodb の保存と取得

mongogo ドライバーでの Mongodb の保存と取得

PHPz
PHPz転載
2024-02-06 09:39:071004ブラウズ

mongogo 驱动程序中的 Mongodb 存储和检索

質問内容

mongo go driverを使用してmongodbからデータを挿入し、そのデータを読み取ろうとしています。データフィールドを持つ構造体を使用しています。このデータ型をインターフェイスとして使用すると、複数のマップが取得され、それをマップ スライスとして指定すると、単一のマップが返されます。 mongodb のデータも同様です。

リーリー

インターフェースのみを使用する場合

マップタイルを使用する場合

どちらの場合でも保存されるデータは似ています。

データにアクセスしようとするとデータの不一致が生じるのはなぜですか?


正解


interface{} を使用すると、mongodb からのデータを最もよく表すものをドライバーが選択できることになります。到着するデータのデータ型。

[]map[string]interface{} を使用する場合は、マップ スライスが必要であることを明示的に示します。各マップはドキュメントを表すことができます。

interface{} を使用するときは、何も言いません。ドライバーは、配列を表すために bson.a を選択し、ドキュメントを表すために bson.d を選択します。

bson.a a> は単なる [] インターフェース{}bson.d []e (e

) リーリー

したがって、基本的に bson.d は、キーと値のペア (プロパティ) の順序付きリストです。

したがって、interface{} を使用すると、複数のマップではなく 1 つのスライスが得られます。型情報を出力しない場合、fmt パッケージは角括弧で囲まれたスライスとマップを出力します。

タイプを確認したい場合は、次のように出力します:

リーリー

[]map[string] インターフェースを使用する場合の出力 {}:

リーリー

インターフェイス使用時の出力{}: リーリー

以上がmongogo ドライバーでの Mongodb の保存と取得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。