在包括“子对象”字段在内的多个字段上添加索引

时间:2018-07-25 08:53:29

标签: mongodb express indexing mongoose unique

我正在使用Mongoose插件开发Express.js。

我有一个这样的架构:

var schema = new Schema({
    field1: {
        type: String,
        required: true,
    },
    field2: {
        type: [{
            field2_1: {
                type: Schema.Types.ObjectId,
                required: true,
            },
            field2_2: {
                // other field 
            },
        }],
        required: true
    }
}, {
    // options
    versionKey: false,
    _id: true,
    id: false,
});

如您所见,field2是array中的Object

如果可能的话,我想在多个字段上设置唯一的约束:field1field2_1

通过这些操作,我无法获得想要的结果:

  • unique:true设置为两个字段
  • 为此架构schema.index({ field1: 1, field2_1: 1 }, { unique: true });创建唯一索引

我想提到的第二点是不起作用的,因为字段field2_1不是模式的直接成员。我也尝试索引field2.field2_1,但这给我一个错误。

所以我的问题是:在这种情况下是否可以对多个字段使用唯一约束?

编辑:我也尝试过schema.index({ field1: 1, "field2.field2_1": 1 }, { unique: true });,没有编译错误,但是在Mongo不会抛出任何异常的情况下,我仍然可以违反约束。

0 个答案:

没有答案