我正在使用mongoose,并且有一个类似于此的架构:
var schema = new mongoose.Schema({
created: Date,
fieldA: ObjectId,
fieldB: ObjectId,
fieldC: ObjectId,
sortField: Number
});
这是一个很大的集合,所以我想确保索引是最佳的。我建立了一个类似这样的查询:
var query = Schema.find({created: some-date-clause});
if ( some-condition )
query = query.or({fieldA: {$in: listOfSomeFieldAIDs}});
if ( some-other-condition )
query = query.or({fieldB: {$in: listOfSomeFieldBIDs}});
if ( yet-another-condition )
query = query.or({fieldC: {$in: listOfSomeFieldCIDs}});
query = query.sort({sortField:-1});
我想确保无论查询是什么,它都完全覆盖了。我的直觉是创建一个跨越创建的索引,fieldA,fieldB,fieldC和sortField。但是,我是否应该为例如仅第二个条件为真,或者第一个和第三个条件为真的情况创建多个索引?我应该以不同的方式接近这个吗?