स्पष्ट sort() जोड़ना सबसे अच्छा है मानदंड यदि आप परिणामों का एक पूर्वानुमेय क्रम चाहते हैं।
यह मानते हुए कि आप जिस क्रम के बाद हैं, वह "सम्मिलन आदेश" है और आप MongoDB के डिफ़ॉल्ट जेनरेट किए गए ObjectIds का उपयोग कर रहे हैं, तो आप ObjectId के आधार पर क्वेरी कर सकते हैं:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
ध्यान दें कि यह उदाहरण केवल इसलिए काम करता है:
- ऑब्जेक्ट आईडी के पहले चार बाइट्स की गणना यूनिक्स-शैली के टाइमस्टैम्प से की जाती है (देखें:ऑब्जेक्ट आईडी विशिष्टता )
_idपर एक प्रश्न केवल डिफ़ॉल्ट_idका उपयोग करेगा एक मिलान खोजने के लिए अनुक्रमणिका (आईडी द्वारा क्रमबद्ध)
तो वास्तव में, यह निहित प्रकार समान है:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
यदि आपने "अगला" उत्पाद (उदाहरण के लिए, एक category) को खोजने के लिए अर्हता प्राप्त करने के लिए क्वेरी में और मानदंड जोड़े हैं ), क्वेरी किसी भिन्न अनुक्रमणिका का उपयोग कर सकती है और आदेश आपकी अपेक्षा के अनुरूप नहीं हो सकता है।
आप explain() के साथ इंडेक्स उपयोग की जांच कर सकते हैं ।