在搜索性能方面,使用数字代替字符串而不是字符串作为枚举模式?
例如,我有这个:
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