您好我有一个应用程序,我们以整数形式发送警报状态,可以是1或0.我使用Mongodb来存储警报状态。 Mongodb使用一种称为整数的类型,它可以存储32位或64位整数值。它还有一个名为boolean的数据类型,它存储一个True或False值。我有2,00,000条记录,警报状态为2,00,000个不同的设备。我的问题是mongo如何在其中存储布尔值(基本上是内部机制)?还在mongodb数据库中消耗较少的内存(布尔或整数)?
答案 0 :(得分:1)
当您对mongodb的低级应用程序详细信息感兴趣时,我总是建议BSON specification作为参考点。
布尔值是两个字节(一个用于类型信息'boolean',一个用于值0x00 for false
和0x01 for true
。
32位整数占用5个字节,64位整数占用9个字节,其中第一个字节用于类型,其余用于信息。
如果更改类型,性能不太可能改变,因为一旦在整个查询中CPU比较很少。
答案 1 :(得分:0)
你不会喜欢这个答案,但没关系。如果您的属性本质上是布尔值,则使用boolean
,无论内部表示如何,除非您遇到一些需要优化的严重性能问题。
在内部我相信Mongo会将布尔值存储为字节或整数。
答案 2 :(得分:-1)
在MongoDB中,布尔值的大小为2个字节,而您可以选择32位整数数据类型或64位(4字节或8个字节)。
您可以在此处查看完整的数据类型列表:http://docs.mongodb.org/manual/reference/bson-types/