所以我知道索引可以使查询更快,但是我不知道如何确定应该和不应该对什么进行索引。例如我在看这个
var FavoriteSchema = new Schema({
user: {
type: ObjectId,
ref: 'User',
required: true,
index: true,
},
business: {
type: ObjectId,
ref: 'Business',
required: true,
index: true,
},
isDeleted: {
type: Boolean,
required: false,
default: false,
},
我注意到用户和企业具有index:true,但isDeleted没有,但是为什么呢?我还想知道以这种方式建立索引如何加快查询速度?
答案 0 :(得分:1)
摘自文档:
没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的那些文档。如果存在用于查询的适当索引,则MongoDB可以使用该索引来限制它必须检查的文档数。
在此处了解更多信息:
您要查询集合中具有特定用户ID的文档吗?可能是的,因此您应该为此创建索引。
您要查询集合中具有特定isDeleted
值的文档吗?如果是,请为此创建索引。如果不是,或者只是有时,则不要创建索引。