我一直在做Mongo DB大学课程,并开始更多地关注我们的应用程序索引;我们有一个使用以下字段的常见查询的碰撞:
_id:string,stats(schema).created_by:string,list(schema).user_id:string,deleted:false
架构示例:
var listSchema = schema({
user_id: {type: String, trim: true},
email: {type: String, trim: true}
}, {_id: false, versionKey: false});
var modelSchema = schema({
name: {type: String, trim: true, required: true},
stats: {
created_by: String,
updated_at: {type: Date, default: new Date()},
},
deleted: {type: Boolean, default: false},
list: [listSchema],
other....
})
最常见的查询如下所示:
var queryParams = {
_id: projectId,
$and: [
{
$or: [
{'stats.created_by': userId},
{'list.user_id': userId}
]
}
],
deleted: false
};
// Fire the request to find an object based on the above queryParams
ModelObject.findOne(queryParams....
问题是,这里使用的最佳索引配置是什么,集合是一体的。 这是由上述字段创建组索引的问题吗? _id已经编入索引,可以在这里重复使用!!! $和$或有影响吗?
modelSchema.index({'_id': 1, 'stats.created_by': 1, 'list.user_id': 1, 'deleted': 1});
任何建议,最佳实践都将在这里受到赞赏。
感谢。
Ĵ