sql >> Database >  >> NoSQL >> MongoDB

Een MongoDB-query naar een ander systeem sturen:converteren naar JSON en vervolgens decoderen naar BSON? Hoe doe je dat in Go-taal?

Na wat onderzoek vond ik de mejson bibliotheek, maar het is alleen voor Marshaling, dus ik besloot een Unmarshaller te schrijven.

Zie ejson (ik schreef het), op dit moment is het een heel eenvoudige ejson -> bson converter, er is geen bson -> ejson toch kun je mejson . gebruiken daarvoor.

Een voorbeeld :

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. Mongodb-aggregatie:alleen overeenkomende elementen van een array retourneren?

  2. MongoDB werkt meerdere records van array bij

  3. Pymongo-aggregatie - pythonlijst doorgeven voor aggregatie

  4. Queryvelden in een MongoDB-verzameling.