根据猫鼬有关https://mongoosejs.com/docs/guide.html#indexes的文档:
“对于猫鼬,我们在路径级别或架构级别的Schema中定义这些索引。”
请澄清一下:这意味着我不能有两个不同的索引,一个在Schema路径级别定义,另一个在Schema级别定义?例如:
var animalSchema = new Schema({
name: String,
age: String,
tags: { type: [String], index: true } // field level
});
animalSchema.index({ name: 1, type: -1 }); // schema level
答案 0 :(得分:1)
在字段一级,这只是.index
函数的糖语法。
因此,如果您已经使用.index
函数在字段上定义了索引,则它将不再执行其他操作。
在您的示例中,将创建tags
上的索引以及name + type
上的索引。
此:
var animalSchema = new Schema({
name: String,
age: String,
tags: { type: [String], index: true } // field level
});
等效于此:
var animalSchema = new Schema({
name: String,
age: String,
tags: { type: [String] }
});
animalSchema.index({ tags: 1 }); // schema level