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

mongodb console update change data type

原数据为:

{"u":1}

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

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

数据确实变成了

{"u":0}

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

bson.getIntField("u")

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

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

P.S mongodb 版本是 2.6.6 linux

默认插入任何数值或 "changed" 作为 Double。对于其他 "types",请将 NumberInt() or NumberLong() 用于您希望在 C++ 或其他类型敏感代码中读取的相应类型:

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

或:

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