MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menangani Custom BSON Marshaling

Custom bson Marshalling/Unmarshalling bekerja dengan cara yang hampir sama, Anda harus mengimplementasikan antarmuka Getter dan Setter masing-masing

Sesuatu seperti ini seharusnya bekerja :

type Currency struct {
    value        decimal.Decimal //The actual value of the currency.
    currencyCode string          //The ISO currency code.
}

// GetBSON implements bson.Getter.
func (c Currency) GetBSON() (interface{}, error) {
    f := c.Value().Float64()
    return struct {
        Value        float64 `json:"value" bson:"value"`
        CurrencyCode string  `json:"currencyCode" bson:"currencyCode"`
    }{
        Value:        f,
        CurrencyCode: c.currencyCode,
    }, nil
}

// SetBSON implements bson.Setter.
func (c *Currency) SetBSON(raw bson.Raw) error {

    decoded := new(struct {
        Value        float64 `json:"value" bson:"value"`
        CurrencyCode string  `json:"currencyCode" bson:"currencyCode"`
    })

    bsonErr := raw.Unmarshal(decoded)

    if bsonErr == nil {
        c.value = decimal.NewFromFloat(decoded.Value)
        c.currencyCode = decoded.CurrencyCode
        return nil
    } else {
        return bsonErr
    }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pemodelan data multibahasa di MongoDB

  2. Bagaimana saya bisa mengubah ukuran koleksi yang dibatasi mongodb tanpa kehilangan data?

  3. MongoDB $atau kueri

  4. Skema luwak:'unik' tidak dihormati

  5. Tambahkan Validator baru ke Koleksi yang Ada