sql >> Databasteknik >  >> NoSQL >> MongoDB

Skicka en MongoDB-fråga till ett annat system:konvertera till JSON och sedan avkoda till BSON? Hur gör man det på Go-språket?

Efter lite forskning hittade jag mejson biblioteket, men det är bara för Marshaling, så jag bestämde mig för att skriva en Unmarshaller.

Se ejson (Jag skrev det), just nu är det en väldigt enkel ejson -> bson omvandlare, det finns ingen bson -> ejson ändå kan du använda mejson för det.

Ett exempel :

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. Array-delmängd i pipeline för aggregeringsramverk

  2. Matchningssökare med flera parametrar med Redis

  3. Hur flyttar jag en redis-databas från en server till en annan?

  4. Dropzone-filen är inte fullständigt bearbetad när processFile(File) anropas