mongodb 2.1.1对raspberry pi的奇怪行为 - 无法插入浮点数

时间:2013-03-04 20:00:41

标签: mongodb floating-point raspberry-pi raspbian

我的覆盆子pi上的mongodb出了问题。我正在运行https://github.com/RickP/mongopi

版本2.1.1

问题是:我无法在数据库中插入1.937的值。以下是mongo shell的输出结果:

> db.sensor.drop()
true

我首先清理集合,所以一切都很干净

> db.sensor.insert({'sensor_id': 3, 'value': 1.937})
> db.sensor.findOne()
{
    "_id" : ObjectId("5134fb85e59d6e0efe256a79"),
    "sensor_id" : 3,
    "value" : -2.960244045726579e-47
}

正如您所看到的,1.937的值在数据库中存储错误...这真的很奇怪。

如果我运行以下命令:

> db.sensor.insert({'sensor_id': 3, 'value': 2})

然后我得到

> db.sensor.find()
{ "_id" : ObjectId("5134fb85e59d6e0efe256a79"), "sensor_id" : 3, "value" : -2.960244045726579e-47 }
{ "_id" : ObjectId("5134fcece59d6e0efe256a7a"), "sensor_id" : 3, "value" : 2 }

正如你所看到的,第二个条目是好的...问题只在于浮动值。

为什么?

感谢

1 个答案:

答案 0 :(得分:0)

无法在MongoDB 2.1.1的本地实例中重现它

MongoDB shell version: 2.1.1
connecting to: test
> db.version()
2.1.1
> db.xx.drop()
false
> db.xx.insert({'sensor_id': 3, 'value': 1.937})
> db.xx.insert({'sensor_id': 3, 'value': 3})
> db.xx.find()
{ "_id" : ObjectId("51586b66cff42dd9c4bc608c"), "sensor_id" : 3, "value" : 1.937 }
{ "_id" : ObjectId("51586b6ccff42dd9c4bc608d"), "sensor_id" : 3, "value" : 3 }