mongodb控制台更新更改数据类型

时间:2015-01-09 01:34:27

标签: mongodb mongodb-query

原始数据是:

{"u":1}

' u'是Int。 在mongod控制台中运行命令之后:

update({},{$set:{"u":0}})
find({})

数据确实成了

{"u":0}

看起来很不错。但是当我使用C ++驱动程序读取它们时:

bson.getIntField("u")

崩溃。原因是类型' u'是双倍的!这意味着mongod的更新命令会无声地改变你的类型。

为什么呢?以及如何防止这种情况?

P.S mongodb版本是2.6.6 linux

1 个答案:

答案 0 :(得分:2)

插入任何数值或"更改"默认为Double。对于其他"类型"使用NumberInt()NumberLong()表示您希望在C ++或其他类型敏感代码中阅读的相应类型:

update({},{ "$set":{ "u": NumberInt(0) }})

或:

update({},{ "$set":{ "u": NumberLong("0") }})