问题描述
我正在阅读有关索引的 mongoose 文档,并想找出字段级索引和架构级索引之间是否存在差异。他们提到“在创建复合索引时需要在模式级别定义索引”。是否还有其他原因可以让我选择一个而不是另一个,或者这只是一种偏好?
const animalSchema = new Schema({
name: String,type: String,tags: { type: [String],index: true } // field level
});
animalSchema.index({ name: 1,type: -1 }); // schema level
解决方法
在制定索引策略时,您应该深入了解应用程序的查询。在构建索引之前,请绘制出您将运行的 queries
的类型,以便您可以构建引用这些字段的索引。
例如,您有一个查询只是基于 name
这样的一个字段查找,因此您可以在 name
中索引 field level
但如果您有一个基于 name
和 { 查找的查询{1}} 所以你应该在这种情况下将 tag
和 name
索引在一起,你应该在 tag