Mongodb 将Mongo shell配置为默认情况下将所有数字存储为整数

Mongodb 将Mongo shell配置为默认情况下将所有数字存储为整数,mongodb,mongodb-shell,Mongodb,Mongodb Shell,默认情况下,MongoDB shell将所有数字解释为浮点数;当尝试将现有JSON格式的数据(在Mongo中存储为字符串)转换为实际的Mongo BSON对象时,这是一个问题。使用numberrint(…)/NumberLong(…)显式地手动包装数据中的任何整数值也会很麻烦,因为整数可以出现在数据中的任何位置 是否有办法将一个MongoDB shell会话配置为默认使用numberrint或NumberLong 或者:是否有一种方法可以将一个JSON字符串解析为MongoDB shell中的一

默认情况下,MongoDB shell将所有数字解释为浮点数;当尝试将现有JSON格式的数据(在Mongo中存储为字符串)转换为实际的Mongo BSON对象时,这是一个问题。使用
numberrint(…)
/
NumberLong(…)
显式地手动包装数据中的任何整数值也会很麻烦,因为整数可以出现在数据中的任何位置

是否有办法将一个MongoDB shell会话配置为默认使用
numberrint
NumberLong


或者:是否有一种方法可以将一个JSON字符串解析为MongoDB shell中的一个对象,以便所有没有小数点的数字都已经用
numberrint
/
NumberLong
包装?

我现在使用的解决方案是对从中返回的数据调用
markIntegers
函数
JSON.parse
;它似乎工作得很好。为了完整起见,我把它贴在这里;欢迎提供更好的解决方案和更正

函数标记整数(obj){
if(阵列的obj实例){
返回对象映射(函数(x){returnmarkintegers(x);});
//确保它是普通对象,而不是日期或BinData等
}if(obj!==null&&typeof obj===“object”&&obj.constructor==object){
var ret={}
for(obj中的var键)
ret[key]=标记整数(obj[key]);
返回ret;
}否则如果(对象类型==“编号”){
返回obj==数学楼层(obj)?编号长(obj):obj;
}否则{
返回obj;
}
}
其工作原理如下:

>标记整数({a:{b:3},c:4.4,e:[“hello”]})
{“a”:{“b”:NumberLong(3)},“c”:4.4,“e”:[“hello”]}