sql >> データベース >  >> NoSQL >> MongoDB

MongoDBクエリを別のシステムに送信する:JSONに変換してからBSONにデコードしますか? Go言語でそれを行う方法は?

    調査の結果、mejson が見つかりました。 ライブラリですが、マーシャリング専用なので、Unmarshallerを書くことにしました。

    ejson を見よ (私はそれを書きました)、今は非常に単純なejson -> bson コンバーター、bsonはありません -> ejson それでも、mejsonを使用できます そのために。

    const j = `{"_id":{"$oid":"53c2ab5e4291b17b666d742a"},"last_seen_at":{"$date":1405266782008},"display_name":{"$undefined":true},
    "ref":{"$ref":"col2", "$id":"53c2ab5e4291b17b666d742b"}}`
    
    type TestS struct {
        Id          bson.ObjectId `bson:"_id"`
        LastSeenAt  *time.Time    `bson:"last_seen_at"`
        DisplayName *string       `bson:"display_name,omitempty"`
        Ref         mgo.DBRef     `bson:"ref"`
    }
    
    func main() {
        var ts TestS
        if err := ejson.Unmarshal([]byte(j), &ts); err != nil {
            panic(err)
        }
        fmt.Printf("%+v\n", ts)
    
        //or to convert the ejson to bson.M
    
        var m map[string]interface{}
        if err := json.Unmarshal([]byte(j), &m); err != nil {
            t.Fatal(err)
        }
        err := ejson.Normalize(m)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%+v\n", m)
    
    }
    



    1. c-driverを使用してインデックスでmongo配列要素を更新します

    2. Pymongo Regex$all複数の検索用語

    3. MongoDBが候補プランを選択する方法

    4. Mongo集約フレームワーク、並べ替えてからグループが機能しない