MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Xử lý BSON Marshaling tùy chỉnh

Bson Marshalling / Unmarshalling tùy chỉnh hoạt động gần giống nhau, bạn phải triển khai các giao diện Getter và Setter tương ứng

Một cái gì đó như thế này sẽ hoạt động:

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. Triển khai cơ sở dữ liệu đám mây với ClusterControl 1.6

  2. cách nhóm trong mongoDB và trả về tất cả các trường trong kết quả

  3. mongoose / mongodb truy vấn nhiều loại

  4. Cách tạo chỉ mục văn bản trong MongoDB

  5. MongoDB:Làm cách nào để có được danh sách riêng biệt của các giá trị trường tài liệu con?