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