1.:Vaše dotazy jsou příliš složité. Příliš časté používání $elemMatch. 2.:Pokud do dotazu zahrnete svůj shard klíč, výrazně to zvýší rychlost.
Budu pro vás optimalizovat vaše dotazy:
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()
Sečteno a podtrženo:zahrňte svůj úlomkový klíč pokaždé, abyste ušetřili čas.
Může dokonce ušetřit čas procházením vašich fragmentů klíčů a opakováním stejného dotazu.