我想将任意Javascript对象保存到MongoDB文档,但我希望数据库中的所有数字都是Double类型。所有不是数组或对象的字段都将是字符串或数字。
例如:{ "things": [ 1.0, 1.1, [ { "item": 6 }, 5.5, "test" ] ],
"other things": { "thing": 2.0, "other thing" : [ 4.4, 5.0 ] },
"another thing": 6.0 }
}
nodejs-mongodb-native驱动程序可以将数字(例如5.0)保存为Int32。
我可以通过用Double对象替换它们来强制数字为Double:
var mongo = require('mongodb');
new mongo.Double(number);
还有比递归遍历整个Javascript对象更好的方法吗用mongo替换每个数字。双对象?
您不必将变量替换为mongo。在整个代码中使用Double。当您创建存储在数据库中的文档时,这样做就足够了。使用对象关系映射框架也可以帮助您实现这一点。
当你想要存储你的Javascript对象,因为他们是在数据库中,没有一个中间的数据库版本的对象,你可以创建一个包装器函数来保存对象到MongoDB,创建一个深度拷贝的对象,但存储所有的整数在mongo源文档。目标文档中有两个。然后将目标文档保存到数据库。