1

我一直在使用 Morphia 从 Java 中持久化对象。我也一直在从控制台运行一些批处理。我刚刚意识到一些值现在存储为 NumberLong 和数字作为纯 Javascript 数字。

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

所有司机都是这样吗?避免 NumberLong 的最佳做法是我可以将值放入 32 位吗?如果将所有 NumberLong 转换为基本数字,是否会节省大量数据和索引空间?

4

1 回答 1

1

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

于 2012-04-14T22:39:39.743 回答