如何防止mgo unmarshal int到float64

时间:2015-02-24 19:12:54

标签: mongodb go mgo

我有未知的json结构数据存储在mongodb中。他们有像这样展示unix时间的字段:

"date": 1424803567,

我正在使用mgo将它们加载到bson.M.

var result bson.M
iter := c.Find(q).Iter()
for iter.Next(&result) {

那些unix时间字段已转向fload64而不是int。

 "date": 1.424728798e+09,

那么,如何防止上述情况发生?谢谢!

1 个答案:

答案 0 :(得分:1)

Mgo不会将整数解组为float,除非应用程序显式地将目标值类型化为float。 Mgo在这里返回一个浮点值,因为存储在数据库中的值是一个浮点值。

您可以通过使用struct指定类型来将浮点值解组为整数:

var result struct {
  Date int64 `bson:"date"`
}
for iter.Next(&result) {
  ...
}