J'utilise mangouste et ont un schéma semblable à ceci:index correct mongo pour une grande requête
var schema = new mongoose.Schema({
created: Date,
fieldA: ObjectId,
fieldB: ObjectId,
fieldC: ObjectId,
sortField: Number
});
Ceci est une grande collection, donc je veux vous assurer que les index sont optimaux. Je construis une requête avec quelque chose comme ceci:
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});
Je veux vous assurer que quelle que soit la requête est, il est entièrement couvert. Mon instinct est de créer un index qui couvre les champs créés, fieldA, fieldB, fieldC et sortField. Mais dois-je réellement créer plusieurs indices pour les situations où par exemple seulement la deuxième condition est vraie, ou le premier et le troisième sont vrais? Devrais-je aborder cela différemment?
Très utile, merci @JohnnyHK. – thejav