我可以在架构路径级别和架构级别都使用Mongoose索引吗?

时间:2019-05-15 01:20:14

标签: javascript node.js mongoose

根据猫鼬有关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

1 个答案:

答案 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