MongoDB query परिणामांना sort सह क्रमवारी लावतो आणि limit आणि skip सह pagination करतो — हे find cursor वर जोडलेले असतात. ते एकत्रितपणे डेटाचे ऑर्डरिंग आणि पृष्ठांची मिळवणी हाताळतात, जे परिणाम दाखवण्यासाठी आवश्यक आहे.
MongoDB query परिणामांना sort सह क्रमवारी लावतो आणि limit आणि skip सह pagination करतो — हे find cursor वर जोडलेले असतात. ते एकत्रितपणे डेटाचे ऑर्डरिंग आणि पृष्ठांची मिळवणी हाताळतात, जे परिणाम दाखवण्यासाठी आवश्यक आहे.
db.users.find().sort({ age: 1 }); // ascending by age (1 = asc)
db.users.find().sort({ age: -1 }); // descending (-1 = desc)
db.users.find().sort({ country: 1, name: 1 }); // by country, then name (tie-break)
db.users.find().sort({ createdAt: -1 }); // newest first (common)
sort field:direction चे दस्तऐवज घेतो (1 восходящо, -1 अवरोही). अनेक फील्ड tie-breaking प्रदान करतात.
db.users.find().sort({ name: 1 }).limit(10); // first 10 (page 1)
db.users.find().sort({ name: 1 }).skip(10).limit(10); // skip 10, take 10 (page 2)
// page N: .skip((N-1) * pageSize).limit(pageSize)
limit(n) सर्वोच्च n दस्तऐवज परत करतो; skip(m) पहिले m वगळतो. एकत्रितपणे ते offset pagination लागू करतात (पृष्ठ N skip + limit द्वारे).
// ❌ pagination without sort → inconsistent order (pages may overlap/skip)
db.users.find().skip(10).limit(10);
// ✅ sort by a stable field for consistent pages
db.users.find().sort({ _id: 1 }).skip(10).limit(10);
sort व्यतिरिक्त, दस्तऐवज क्रम हमी नाही, तर पृष्ठांचे pagination असंगत असू शकते. पृष्ठांचे pagination करताना नेहमी स्थिर फील्डने (_id सारख्या) sort करा.
// ⚠️ skip(1000000) must scan/skip a million docs → slow on deep pages
// ✅ range-based (cursor) pagination — far more efficient for large datasets
db.users.find({ _id: { $gt: lastSeenId } }).sort({ _id: 1 }).limit(10);
// → use the last document's _id to fetch the next page (uses the index, no skipping)
Sorting on an INDEXED field is efficient. Sorting a large result set WITHOUT an index
requires an in-memory sort (limited size — can fail/be slow for big sorts).
→ Index fields you sort by.
Sorting आणि pagination MongoDB मध्ये डेटा उपयोगीपणे दाखवण्यासाठी मूलभूत आहेत — परिणामांची क्रमवारी आणि व्यवस्थापित पृष्ठांची मिळवणी जवळजवळ सार्वत्रिक गरज आहेत (कोणतीही सूची, फीड किंवा अनुप्रयोगातील तक्ता), तर त्यांना समजून घेणे आवश्यक दैनंदिन ज्ञान आहे.
sort ला जाणून घेणे (फील्डने क्रमवारी 1/-1 सह, tie-breaking सह) आणि limit/skip (अनुक्रमणिका offset pagination — डेटाचे पृष्ठांची मिळवणी) साधारण गरजा पूर्ण करतात.
दोन व्यावहारिक बिंदू विशेषत: महत्वाचे आहेत: pagination करताना नेहमी sort करा (त्याविना, दस्तऐवज क्रम हमी नाही, असंगत पृष्ठांना कारण देते जे ओव्हरलॅप किंवा दस्तऐवज वगळतात — एक वास्तविक बग, SQL मधील समान समस्या), आणि हे समजून घेणे की skip खोल पृष्ठांवर मंद आहे (यास सर्व मागील दस्तऐवज स्कॅन आणि वगळावे लागतात) — त्यामुळे range-based (cursor) pagination (शेवटचे पाहिलेले _id वापरून पुढील पृष्ठ मिळविण्यासाठी, वगळल्याशिवाय अनुक्रमणिका वापरून) मोठ्या डेटासेटसाठी अधिक कार्यक्षम आहे, हे मूल्यवान कार्यक्षमता तंत्र आहे.
हे जाणून घेणे की अनुक्रमणिका फील्डवर sorting कार्यक्षम आहे तर मोठ्या अनुक्रमणिका रहित sorts मंद किंवा अपयशी होऊ शकतात (मेमोरी sort मर्यादा) देखील महत्वाचे आहे — आपण sort करणार्या फील्डसाठी अनुक्रमणिका करा.
Sorting आणि pagination अक्षरशः कोणत्याही डेटा प्रदर्शनसाठी आवश्यक आहे, आणि stability आवश्यकता (स्थिर pagination साठी sort) आणि कार्यक्षमता विचार (skip विरुद्ध range-based pagination, अनुक्रमणिका sorts) थेट योग्यता आणि गतीवर परिणाम करतात, MongoDB sorting आणि pagination समजून घेणे — sort, offset pagination skip/limit सह, स्थिर-sort आवश्यकता, कार्यक्षम range-based पर्याय, आणि sort फील्डसाठी अनुक्रमणिका — MongoDB डेटा प्रभावीपणे आणि कार्यक्षमतेने सादर करणारी अनुप्रयोगे तयार करण्यासाठी आवश्यक, वारंवार-लागू ज्ञान आहे.