पहला:आपके प्रश्न अत्यधिक जटिल हैं। $elemMatch का बहुत बार उपयोग करना। दूसरा:यदि आप अपनी शार्प कुंजी को क्वेरी में शामिल कर सकते हैं तो इससे गति में अत्यधिक सुधार होगा।
मैं आपके प्रश्नों को आपके लिए अनुकूलित करने जा रहा हूँ:
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()
लब्बोलुआब यह है:हर बार समय बचाने के लिए अपनी शार्प की को शामिल करें।
यह आपकी शार्प कुंजियों के माध्यम से लूप करने के लिए समय भी बचा सकता है और एक ही क्वेरी को कई बार कर सकता है।