mgo を使用した MongoDB での非構造化データの処理
初心者の Go 開発者にとって、mgo ライブラリは MongoDB コレクション内の非構造化データを扱うときに課題を引き起こす可能性があります。 。この制限は、クエリによって返される事前定義されたデータを含む構造体を定義する必要があるために発生します。レコードを配列に割り当ててキーに柔軟にアクセスできる PHP などの言語とは異なり、Go にはそのような機能がありません。
ただし、mgo は非構造化データを処理するためのいくつかのアプローチを提供します。
マップの使用:
bson.M タイプのマップを使用すると、取得したデータをキーと値の形式:
var m bson.M err := collection.Find(nil).One(&m) check(err) for key, value := range m { fmt.Println(key, value) }
ドキュメント スライスの使用:
bson.D スライスは、キーの順序を維持して最適化されたアプローチを提供します:
var d bson.D err := collection.Find(nil).One(&d) check(err) for i, elem := range d { fmt.Println(elem.Name, elem.Value) }
インライン マップの使用フィールド:
マップの柔軟性と構造体の利便性を組み合わせることで、,inline bson フラグを使用すると、構造体内で ,inline マップ フィールドを使用できるようになり、既知のフィールドと未知のフィールドの両方へのアクセスが提供されます:
type Person struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string Phone string Extra bson.M `bson:",inline"` }
以上がGo の mgo ライブラリは MongoDB の非構造化データを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。