可以在MongoDB的同一字段中混合NumberLong和普通整数吗?

时间:2012-04-12 11:26:11

标签: mongodb

我一直在使用Morphia来保存Java中的持久对象。我也从控制台运行了一些批处理过程。我刚刚意识到一些值现在存储为NumberLong,而数字则存储为普通的Javascript数字。

我有这个字段的索引。一切似乎都没问题 - 如果我查询:{f: 100} 从控制台它仍然返回对象,即使它实际上包含{f: NumberLong(100)}

所有司机都这样吗?最好的做法是避免NumberLong,我可以在32位内部拟合值吗?如果我将所有NumberLongs转换为基本数字,我会保存大量数据和索引空间吗?

1 个答案:

答案 0 :(得分:1)

普通的JavaScript编号是64位浮点数(双精度),占用8个字节,因此节省空间不是理由。在您的值中保持一致可能是有价值的,并且在不同的数字类型之间存在权衡。如果你想要32位整数,那么shell中有一个类型(NumberInt)。驱动程序通常会尝试将内容映射到驱动程序的语言中,但尽可能在驱动程序之间进行匹配。