ন্যাচারাল অর্ডার সর্ট: {$natural: -1}
MongoDB-এ {$natural: 1} বা {$natural: -1} দিয়ে ডকুমেন্টগুলো ফিজিক্যাল স্টোরেজ অর্ডারে (ন্যাচারাল অর্ডার) সর্ট করা হয়। -1 মানে LIFO (লাস্ট ইন ফার্স্ট আউট) - সবশেষে ইনসার্ট হওয়া ডকুমেন্ট প্রথমে আসে।
নমুনা ডেটা তৈরি
> db.demo614.insertOne({ "CountryName": "US" })
> db.demo614.insertOne({ "CountryName": "UK" })
> db.demo614.insertOne({ "CountryName": "AUS" })
> db.demo614.insertOne({ "CountryName": "IND" })
ডিফল্ট ফাইন্ড (ইনসারশন অর্ডার)
> db.demo614.find()
আউটপুট:
{ "_id": ObjectId("..."), "CountryName": "US" }
{ "_id": ObjectId("..."), "CountryName": "UK" }
{ "_id": ObjectId("..."), "CountryName": "AUS" }
{ "_id": ObjectId("..."), "CountryName": "IND" }
ন্যাচারাল ডিসেন্ডিং সর্ট (LIFO)
> db.demo614.find().sort({ $natural: -1 })
ফলাফল:
{ "_id": ObjectId("..."), "CountryName": "IND" }
{ "_id": ObjectId("..."), "CountryName": "AUS" }
{ "_id": ObjectId("..."), "CountryName": "UK" }
{ "_id": ObjectId("..."), "CountryName": "US" }
ব্যাখ্যা
$natural: 1: ফরওয়ার্ড ন্যাচারাল অর্ডার (ফিজিক্যাল স্টোরেজ অর্ডার, সাধারণত ইনসারশন অর্ডার)$natural: -1: রিভার্স ন্যাচারাল অর্ডার (LIFO - লাস্ট ইনসার্টেড ফার্স্ট)- ক্যাপড কলেকশন (
capped collection) এ ন্যাচারাল অর্ডার গ্যারান্টイド ইনসারশন অর্ডার - নন-ক্যাপড কলেকশনে আপডেট/মুভের কারণে ফিজিক্যাল লোকেশন পরিবর্তন হলে অর্ডার বদলতে পারে
- বিকল্প: টাইমস্ট্যাম্প ফিল্ড (
createdAt) বা_id(ObjectId-তে টাইমস্ট্যাম্প আছে) দিয়ে সর্ট করুন:sort({ _id: -1 })- এটি আরও নির্ভরযোগ্য
ন্যাচারাল সর্ট কোনো ইন্ডেক্স ব্যবহার করে না, ফুল কোলেকশন স্ক্যান করে।