猫鼬识别符+唯一索引

时间:2019-10-08 07:16:13

标签: mongoose indexing unique discriminator

我正在尝试在具有区分符的模型上创建唯一索引,但不会创建该索引。

我有一个名为加油的模型,其中包含一些字段和唯一索引:

RefuelingSchema.index(
  { vehicle: 1, organization: 1, provider: 1, date: 1 },
  { unique: true, background: false }
);

车辆,提供者和组织是ObjectId(),日期定义如下:

date: {
  type: Date,
  required: [
    true,
    "Some error text"
  ]
}

该模型是“抽象的”,因此它具有许多允许实例化的鉴别器(请注意 fuelType 作为discriminatorKey),如下所示:

let schemaOptions = {
  autoIndex: true,
  versionKey: false,
  discriminatorKey: "fuelType",
  dropDups: [true, "Another error text"]
};


/* Discriminators */
let GasolineRefuelingSchema = new mongoose.Schema(
  GasolineRefuelingSchemaStructure,
  schemaOptions
);
let GasolineRefueling = Refueling.discriminator(
  fuelTypes[0],
  GasolineRefuelingSchema
);

let DieselRefuelingSchema = new mongoose.Schema(
  DieselRefuelingSchemaStructure,
  schemaOptions
);
let DieselRefueling = Refueling.discriminator(
  fuelTypes[1],
  DieselRefuelingSchema
);

启动应用程序时,索引似乎是按照服务器控制台上显示的方式创建的:

Mongoose: refuelings.createIndex({ vehicle: 1, organization: 1, provider: 1, date: 1, fuelType: 1 }, { unique: true, dropDups: true, background: false })

在创建索引时,使用此模型的 index 事件不会返回任何错误:

mongoose.model("Refueling").on("index",err=>{
if (err) 
console.log("Error while creating index: " + err);
})

但是使用以下命令时它不会出现在数据库中: db.refuelings.getIndexes()

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "local_library.refuelings"
    }
]

当我尝试节省一些加油时,它也存储重复项

如果我通过Mongo控制台手动创建索引,则它可以工作。 我想念什么? 谢谢

0 个答案:

没有答案