【问题标题】:Is it better to use number instead of string for enum schema in mongoose?在猫鼬中使用数字而不是字符串作为枚举模式会更好吗?
【发布时间】:2016-06-16 07:24:26
【问题描述】:

就搜索性能而言,使用数字而不是字符串作为 mongoose 中的枚举模式是否更好?

例如,我有这个:

 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 mongoose


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Mongodb 使用 BSON(Binary JSON) 来存储文档。 阅读本文以了解 json 和 bson Mongodb - https://www.mongodb.com/json-and-bson

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

      字符串会带来一些额外的开销 他们; bits 告诉 Mongo 它们是字符串, bits 告诉 Mongo 它们有多长。

      所以数字会比字符串快。

      参考

      http://bsonspec.org/spec.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 2011-01-04
        • 2023-01-31
        • 1970-01-01
        相关资源
        最近更新 更多