我看到在 mongodb 中存储布尔信息的三种主要可能性:
- 0 或 1 作为字符串
- 0 或 1 作为数字
- 布尔值的 True 或 False
每种方法在使用的存储空间和查询速度方面有哪些优点/缺点?
Boolean
是本机字段类型BSON http://bsonspec.org/spec.html(MongoDB 的服务器端存储格式,又名“二进制 JSON”)。布尔值比整数或字符串使用更少的存储空间,并避免比较的任何意外副作用。
例如,在 MongoDB 中find()
查询一个字符串"1"
将不匹配数值1
或布尔值true
。如果你想存储布尔值,一定要使用布尔类型。
比较 BSON 大小(以字节为单位)mongo
外壳的完整性:
// Number (JavaScript double) - 8 bytes
> var foo = { a: 1 }
> Object.bsonsize(foo)
16
// UTF-8 String - 6 bytes
> var foo = { a: '1'}
> Object.bsonsize(foo)
14
// 32-bit int - 4 bytes
> var foo = { a: NumberInt(1)}
> Object.bsonsize(foo)
12
// Boolean - 1 byte
> var foo = { a: true}
> Object.bsonsize(foo)
9
注意:上面示例中 JSON 对象的基本大小(不包括字段值)为 8 个字节,因此报告的差异Object.bsonsize()
是字段值的表示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)