mongodb:限制数字字段的可能值

时间:2015-10-08 13:26:47

标签: mongodb mongoose

我想限制mongo中字段的选择:

units : { type: Number, default: 1 },

但我想添加这个约束:类似

授权值:[1,10,100,1000]

3 个答案:

答案 0 :(得分:5)

您显然正在使用mongoose类似验证码的enum

var mySchema = new Schema({
    "units": { "type": Number, "default": 1, "enum": [1,10,100,1000] }
})

答案 1 :(得分:0)

MongoDB中没有枚举,因为json / bson中没有枚举,所以是的,你不能,你只能使用你的编程语言控制输入的值(例如:输入意外值时触发异常)

答案 2 :(得分:0)

Mongoose的枚举验证程序仅适用于字符串类型,但您可以使用custom validator执行此操作:

units : { 
    type: Number, 
    default: 1,
    validate: {
        validator: function (value) {
            return [1, 10, 100, 1000].indexOf(value) !== -1;
        },
        message: 'Value must be one of 1, 10, 100, 1000'
    }
}