使用数字而不是字符串作为词汇中的枚举模式更好



在搜索性能方面,使用数字代替字符串而不是字符串作为枚举模式?

例如,我有这个:

 status: {
     type: String, 
     enum: ['active', 'inactive', 'disabled', 'deleted'], 
     default: 'inactive'
 },
 //status: {
 //    type: Number, 
 //    enum: [0, 1, 2, 3], 
 //    default: '1'
 //},   

db.col.find({status: 'active'})db.col.find({status: 1})慢?

在此和这个类似的问题中,从性能的角度来看,它在使用索引时可以忽略不计 - 但是数字会更快一些。
如果您仍然想使用数字,则可以在模式中添加虚拟属性,该属性将您的数字枚举转换为描述性字符串,以便您在某种意义上都拥有两全其美。

mongoDB使用bson(二进制JSON)存储文档。阅读此内容以了解JSON和BSON MONGODB-https://www.mongodb.com/json-and-bson

数字(整数和双打)是"基本类型"在BSON(数据存储在Mongo中的二进制格式)中,并执行不要随身携带额外的开销。

字符串带有一些额外的开销他们;钻头告诉蒙戈,它们是弦,而要告诉蒙戈它们有多长时间。

因此,数字比字符串要快。

参考

http://bsonspec.org/spec.html

最新更新