MongoDB-তে ডকুমেন্টগুলো কোনো ফিল্ড অনুযায়ী সর্ট করে সেকোয়েনশিয়াল পজিশন (১, ২, ৩...) যোগ করতে JavaScript লুপ এবং save() ব্যবহার করা হয়। দ্রষ্টব্য: MongoDB ৪.২+ এ আটোমেটিক র্যাঙ্কিংয় জন্য $setWindowFields (সंस्कরণ ৫.০+) বা অ্যাগ্রিগেশন ব্যবহার করা ভালো।
উদাহরণ: স্কোর সহ ডকুমেন্ট
> db.demo581.insertOne({"Name": "Chris", "Score": 56});
> db.demo581.insertOne({"Name": "Bob", "Score": 240});
> db.demo581.insertOne({"Name": "David", "Score": 150});
সর্ট করে পজিশন যোগ করা (লিগ্যাসি পদ্ধতি)
> db.demo581.createIndex({Score: 1});
> var i = 1;
> db.demo581.find().sort({ "Score": 1 }).forEach(function(d) {
d.Position = i;
i++;
db.demo581.save(d);
});
ফলাফল
> db.demo581.find();
আউটপুট:
{ "Name" : "Chris", "Score" : 56, "Position" : 1 }
{ "Name" : "David", "Score" : 150, "Position" : 2 }
{ "Name" : "Bob", "Score" : 240, "Position" : 3 }
আধুনিক পদ্ধতি (MongoDB 5.0+):
db.demo581.aggregate([
{ $sort: { Score: 1 } },
{ $setWindowFields: {
sortBy: { Score: 1 },
output: { Position: { $documentNumber: {} } }
}}
]);
এটি আরও দ্রুত, এটমিক, এবং শেল-লুপের ঝামেলা নেই।