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

Hvordan konverteres bson til json effektivt med mongo-go-driver?

Hvis du kender strukturen på din BSON, kan du oprette en brugerdefineret type, der implementerer json.Marshaler og json.Unmarshaler grænseflader og håndterer NaN som du ønsker. Eksempel:

type maybeNaN struct{
    isNan  bool
    number float64
}

func (n maybeNaN) MarshalJSON() ([]byte, error) {
    if n.isNan {
        return []byte("null"), nil // Or whatever you want here
    }
    return json.Marshal(n.number)
}

func (n *maybeNan) UnmarshalJSON(p []byte) error {
    if string(p) == "NaN" {
        n.isNan = true
        return nil
    }
    return json.Unmarshal(p, &n.number)
}

type myStruct struct {
    someNumber maybeNaN `json:"someNumber" bson:"someNumber"`
    /* ... */
}

Hvis du har en vilkårlig struktur af din BSON, er din eneste mulighed at krydse strukturen ved hjælp af refleksion og konvertere enhver forekomst af NaN til en type (muligvis en brugerdefineret type som beskrevet ovenfor)




  1. MongoDB shell script ved hjælp af projektion til at formatere dato og få lokal tid

  2. MongoDB backup plan

  3. Mongoose returnerer udefineret for et eksisterende felt

  4. hvordan man søger gennem en mongodb-samling efter ordbogsnøgler indlejret i array