1e:uw vragen zijn te ingewikkeld. Veel te vaak $elemMatch gebruiken.2e:als u uw Shard-sleutel in de query kunt opnemen, zal dit de snelheid drastisch verbeteren.
Ik ga uw zoekopdrachten voor u optimaliseren:
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()
Waar het op neerkomt is dit:voeg elke keer uw Shard-sleutel toe, dit bespaart u tijd.
Het kan zelfs tijd besparen door uw shard-sleutels te doorlopen en dezelfde query meerdere keren uit te voeren.