MongoDB-এ findOne() ব্যবহার করে নির্দিষ্ট ID-র ডকুমেন্ট বের করা
MongoDB-এ findById() একটি মongoose (ODM) মেথড, নেটিভ MongoDB শেল মেথড নয়। নেটিভ শেলে একক ডকুমেন্ট বের করতে findOne() ব্যবহার করা হয়, যা ফিল্টার ম্যাচ করা প্রথম ডকুমেন্টটি ফেরত দেয়।
১. কালেকশন ও কাস্টম _id সহ ডকুমেন্ট তৈরি
> db.demo340.insertOne({_id:1,"Name":"Chris",Age:21});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo340.insertOne({_id:2,"Name":"David",Age:23});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo340.insertOne({_id:3,"Name":"Bob",Age:20});
{ "acknowledged" : true, "insertedId" : 3 }
> db.demo340.insertOne({_id:4,"Name":"Sam",Age:19});
{ "acknowledged" : true, "insertedId" : 4 }
২. সব ডকুমেন্ট দেখানো
> db.demo340.find();
আউটপুট:
{ "_id" : 1, "Name" : "Chris", "Age" : 21 }
{ "_id" : 2, "Name" : "David", "Age" : 23 }
{ "_id" : 3, "Name" : "Bob", "Age" : 20 }
{ "_id" : 4, "Name" : "Sam", "Age" : 19 }
৩. findOne() দিয়ে _id: 1 वाले ডকুমেন্ট বের করা
> db.demo340.findOne({_id:1});
৪. ফলাফল
{ "_id" : 1, "Name" : "Chris", "Age" : 21 }
মূল পার্থক্য:
find()- কার্সর (Cursor) রিটার্ন করে, সব ম্যাচিং ডকুমেন্ট ইটারেট করতে পারে।findOne()- সরাসরি একটি ডকুমেন্ট (Object) রিটার্ন করে (নালও হতে পারে)।find({_id:1}).limit(1)- এটি কার্সর রিটার্ন করে, ডকুমেন্ট নয়।
সুপারিশ: নেটিভ MongoDB শেল বা ড্রাইভারে একক ডকুমেন্টের জন্য সবসময় findOne() ব্যবহার করুন।