当字段只能有两个值中的一个时,boolean如何相对于mongoDB中的int执行?
具体来说,我有一个存储可能存在或可能仍未激活的对象的集合。所以,我希望每行都有一个“活动”键。最好输入
{..., active: false, ...}
或
{..., active: 0, ...}
在查询活动对象时,我对更多对速度方面的性能感兴趣,但我对其将使用多少空间感兴趣 - 如果有权衡的话。
答案 0 :(得分:3)
当您对有关如何实施某些数据类型的低级详细信息感兴趣时,最佳参考是the BSON specification。
在那里你会看到一个布尔值是两个字节(一个字节用于类型信息“boolean”而另一个字节0x00
用于“false”而0x01
用于“true”)而32位整数具有5个字节(类型前缀为1个字节,32位内容为4个字节)。 BSON还支持64位整数,占用9个字节,但在大多数编程语言中,驱动程序将存储32位整数,除非您明确使用64位整数类型。请记住,键的名称是一个占用空间的字符串。
查询性能不太可能受您使用的类型的影响。与比较两个字节/ 32位整数所需的一个CPU操作相比,查询有更多耗时的事情要做。