1.:Dine forespørgsler er alt for komplicerede. Bruger $elemMatch alt for ofte. Andet:Hvis du kan inkludere din shard-nøgle i forespørgslen, vil det forbedre hastigheden drastisk.
Jeg vil optimere dine forespørgsler for dig:
db.user.find({
createdAt: {
$gte: ISODate("2014-12-01"),
$lte: ISODate("2014-12-31")
}
}).explain()
db.user.find({
'transaction.product':'mobile'
}).explain()
db.user.find({
'transaction.product':'mobile',
firstTransaction:{
$in:[
ISODate("2015-01-01"),
ISODate("2015-01-02")
]
}
}).explain()
Nederste linje er dette:medtag din shard-nøgle, hver gang er en tidsbesparelse.
Det kan endda spare tid at gå gennem dine shard-nøgler og foretage den samme forespørgsel flere gange.