如何防止 mgo 将 int 解组为 float64

How to prevent mgo to unmarshal int to float64

我在 mongodb 中存储了未知的 json 结构数据。他们有这样的字段来显示 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,

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

Mgo 不会将整数解组为浮点数,除非应用程序将目标值明确键入为浮点数。 Mgo 在这里返回一个浮点值,因为存储在数据库中的值是一个浮点数。

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

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