sql >> Database teknologi >  >> NoSQL >> MongoDB

Sende en MongoDB-forespørgsel til et andet system:konvertering til JSON og derefter afkodning til BSON? Hvordan gør man det på Go-sproget?

Efter lidt research fandt jeg mejson bibliotek, men det er kun til Marshaling, så jeg besluttede at skrive en Unmarshaller.

Se ejson (Jeg skrev det), lige nu er det en meget simpel ejson -> bson konverter, er der ingen bson -> ejson alligevel kan du bruge mejson for det.

Et eksempel :

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. Evaluer betinget et array-element for at returnere

  2. Oprettelse af første bruger i MongoDB 3.2.

  3. sæt standardværdier til mongoose-arrays i node js

  4. Mongoose udfylde sub-sub dokument