MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да конвертирате bson в json ефективно с mongo-go-driver?

Ако знаете структурата на вашия BSON, можете да създадете персонализиран тип, който имплементира json.Marshaler и json.Unmarshaler интерфейси и обработва NaN както желаете. Пример:

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"`
    /* ... */
}

Ако имате произволна структура на вашия BSON, единствената ви възможност е да преминете през структурата, като използвате отражение, и да конвертирате всички срещания на NaN в тип (възможно потребителски тип, както е описано по-горе)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Код на грешка в комплекта реплики 76

  2. MongoDB Opensource срещу MongoDB Enterprise

  3. Какво не е наред със заявката за премахване на MongoDB, използвайки mongodb java за подмасив на документ?

  4. MongoDB:Не може да се канонизира заявката:BadValue Projection не може да има комбинация от включване и изключване

  5. Текстово търсене в MongoDB И множество думи за търсене