在MongoDB文档中强制Javascript数字加倍?

在MongoDB文档中强制Javascript数字加倍?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我想将任意Javascript对象保存到MongoDB文档中,但我希望数据库中的所有数字都是双精度的。 所有不是数组或对象的字段都将是字符串或数字 例如: { "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本机驱动程序

我想将任意Javascript对象保存到MongoDB文档中,但我希望数据库中的所有数字都是双精度的。 所有不是数组或对象的字段都将是字符串或数字

例如:

{ "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本机驱动程序将其可以保存的数字(例如5.0)保存为Int32

我可以通过将数字替换为双对象来强制数字为双对象:

var mongo = require('mongodb');
new mongo.Double(number);
有没有比递归遍历整个Javascript对象更好的方法
用mongo.Double对象替换每个数字?

在整个代码中,不必用mongo.Double替换变量。当您创建存储在数据库中的文档时,这样做就足够了。使用对象关系映射框架也可以帮助您实现这一点


当您希望将Javascript对象按原样存储在数据库中,并且没有对象的中间数据库版本时,可以创建一个包装器函数将对象保存到MongoDB,该函数创建对象的深度副本,但将源文档中的所有整数存储在目标文档中的mongo.Double中。然后将目标文档保存到数据库中。

为什么希望它们在数据库中是双倍的?数据库中的默认存储实际上就像大多数人所说的那样是双倍或浮点数(即MongoDB中数字的默认存储),帮助器正是这一点,并且通常只需要64位浮点数或负浮点数或其他值。Philipp,是的,我想要双倍数,但可以是整数的数字将以Int32的形式出现。Sammaye,也许这是节点mongodb本机驱动程序的一个函数,但有些数字保存为Int32。我相信Int32.5.0将保存为int,但4.4不应该是,有时候,让应用程序处理这个问题会更好。这就是我想知道我是否可以避免的方法:遍历整个任意深度的对象,并用mongo.Double的替换数字。你期望什么样的解决方案?MongoDB是无模式的。你不能告诉它db.collections.doc.field.subfield.subfield必须始终是double。Philipp,我不知道是否有比编写一个例程更好的方法,该例程遍历整个对象并将每个数字更改为mongo.double对象,这就是我问这个问题的原因。