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") }})
原数据为:
{"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") }})