MongoDB ले query results को क्रमबद्ध गर्न sort र pagination गर्न limit र skip प्रयोग गर्दछ — यी सबै find cursor मा chain गरिन्छ। एकसाथ तिनले results को क्रमबद्धता र data को pages फिर्ता गर्ने काम गर्छ, जो results देखाउनको लागि अत्यावश्यक छ।
sort — results को क्रमबद्ध गर्नुहोस्
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 को document लिन्छ (1 ascending, -1 descending को लागि)। एकाधिक fields ले tie-breaking प्रदान गर्छ।
limit र skip — pagination
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 documents फिर्ता गर्छ; skip(m) पहिलो m लाई छोड्छ। एकसाथ तिनले offset pagination लागू गर्छ (page N को लागि skip + limit प्रयोग गरी)।
Paginating गर्दा सधैं sort गर्नुहोस्
// ❌ 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 बिना, document को क्रम ग्यारान्टीड छैन, त्यसैले paginated pages असंगत हुन सक्छ। Paginating गर्दा सधैं स्थिर field (जस्तै _id) द्वारा sort गर्नुहोस्।
गहिरो pages मा skip ढिलो छ — range-based pagination प्रयोग गर्नुहोस्
// ⚠️ 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 र indexes
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 मा data लाई उपयोगी रूपमा देखाउन को लागि मौलिक छ — results को क्रमबद्धता र manageable pages फिर्ता गर्नु एक application को कुनै पनि list, feed, वा table मा लगभग सार्वभौमिक आवश्यकता हो, त्यसैले यहाँ समझ आवश्यक छ।
sort (fields द्वारा 1/-1 द्वारा क्रमबद्ध गर्न, tie-breaking को साथ) र limit/skip (offset pagination को लागि — data को pages फिर्ता गर्न) जान्नु query results प्रस्तुत गर्न को लागि सामान्य आवश्यकताहरू पूरा गर्छ।
दुई व्यावहारिक बिन्दु विशेष रूपमा महत्त्वपूर्ण छन्: paginating गर्दा सधैं sort गर्नुहोस् (यो बिना, document को क्रम ग्यारान्टीड छैन, असंगत pages निर्माण गर्छ जो overlapped वा skip हुन सक्छन् — एक वास्तविक bug, SQL मा जस्तो नै समस्या), र बुझ्नु कि skip गहिरो pages मा ढिलो छ (यो सबै अगाडि को documents स्कैन र skip गर्नुपर्छ) — त्यसैले range-based (cursor) pagination (अन्तिम देखेको _id को लागि अगलो page प्राप्त गर्न, index को बिना skipping, को लागि index लाभ गरी) ठूलो datasets को लागि धेरै प्रभावशाली छ, एक मूल्यवान performance तकनीक।
यो जान्नु कि indexed fields मा sorting दक्ष छ जबकि ठूलो unindexed sorts ढिलो वा असफल हुन सक्छ (in-memory sort limits) पनि महत्त्वपूर्ण छ — तपाईले sort गर्ने fields लाई index गर्नुहोस्।
Sorting र pagination लगभग कुनै पनि data display को लागि आवश्यक छ, र consistency requirement (stable pagination को लागि sort) र performance considerations (skip बनाम range-based pagination, indexed sorts) सीधै correctness र speed लाई असर गर्दछ, MongoDB sorting र pagination को बुझ — sort, offset pagination with skip/limit, stable-sort requirement, efficient range-based alternative, र indexing sort fields — अपरिहार्य, बारम्बार प्रयोग गरिने ज्ञान हो MongoDB data को साथ applications बनाउन कि प्रभावकारी र performant तरिकामा प्रस्तुत गर्छन्।
