我可以让MongoDb用代理类型替换字段表示吗?
我想有一个带有位置的元数据 struct .为了节省来回转换,我希望与我的JSON(用于API)和BSON(用于MongoDB)共享模型.
我可以使用像这样的 struct
type GeoJson struct {
Type string `bson:"type", json:"type"`
Coordinates []float64 `bson:"coordinates", json:"coor"`
}
type Metadata struct {
CaptureTime time.Time `bson:"time", json:"time"`
Coordinate GeoJson `bson:"geo", json:"geo"`
}
但接下来,我将不得不在我的应用程序中使用GeoJson,这让我很不舒服.我宁愿用一些
type GeoLocation struct {
Latitude float64 `json:"lat"`
Longitude float64 `json:"lon"`
}
哪一个更"人类可读性".尤其是当GeoJson是反向(Lon,Lon,而不是普通的Lat,Lon)时.
但如果我将其用于MongoDB struct --我将失go MongoDB必须提供的所有地理定位好处.
我可以告诉MongoDb在写入时将GeoLocation{lat, lon}
映射到GeoJson{type: "point", coordinates:{lon, lat}}
,而在读取时映射到GeoJson{type: "point", coordinates:{lon, lat}}
吗?