কম্পিউটার টিউটোরিয়াল

MongoDB-এ শর্ত পূরণকারী একমাত্র ডকুমেন্ট খুঁজে বের করা (findOne)

MongoDB-এ শর্ত পূরণকারী প্রথম ডকুমেন্ট মাত্র ফেচ করতে findOne() মেথড ব্যবহার করা হয়। এটি find()-এর মতো কার্সর রিটার্ন করে না, বরং সরাসরি ডকুমেন্ট (অথবা null) রিটার্ন করে।

কলেকশন এবং ডকুমেন্ট তৈরি

> db.demo116.insertOne({"EmployeeId":101,"EmployeeName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eff98d8f64a552dae635b") }
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eff9fd8f64a552dae635c") }
> db.demo116.insertOne({"EmployeeId":103,"EmployeeName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2effa5d8f64a552dae635d") }
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2effb7d8f64a552dae635e") }

সব ডকুমেন্ট দেখানো

> db.demo116.find();

আউটপুট (EmployeeId 102 দুবার আছে):

{ "_id" : ObjectId("5e2eff98d8f64a552dae635b"), "EmployeeId" : 101, "EmployeeName" : "John" }
{ "_id" : ObjectId("5e2eff9fd8f64a552dae635c"), "EmployeeId" : 102, "EmployeeName" : "Bob" }
{ "_id" : ObjectId("5e2effa5d8f64a552dae635d"), "EmployeeId" : 103, "EmployeeName" : "David" }
{ "_id" : ObjectId("5e2effb7d8f64a552dae635e"), "EmployeeId" : 102, "EmployeeName" : "Mike" }

findOne() ব্যবহার করে কোয়ারী

> db.demo116.findOne({"EmployeeId":102});

ফলাফল

{ "_id" : ObjectId("5e2eff9fd8f64a552dae635c"), "EmployeeId" : 102, "EmployeeName" : "Bob" }

ব্যাখ্যা: EmployeeId 102 वाले দুটি ডকুমেন্ট আছে, কিন্তু findOne() শুধু প্রথমটি (ন্যাচারেল অর্ডারে, সাধারণত ইনসারশন অর্ডার) রিটার্ন করেছে - Bob। Mike রিটার্ন হয়নি।

find() vs findOne():

ফিচারfind()findOne()
রিটার্ন টাইপCursor (ইটেরেটর)Document বা null
ফলাফল সংখ্যাসকল মিলে যাওয়াপ্রথম মিলে যাওয়া (১টি)
পারফরম্যান্সলার্জ রেজাল্টে ধীরদ্রুত (১টি পাওয়ায় রুকবে)
সোর্টিং.sort() দিয়ে কন্ট্রোলইনডেক্স/ন্যাচারেল অর্ডার

স্পেসিফিক ডকুমেন্ট পেতে (সোর্ট সহ):

db.demo116.findOne({EmployeeId: 102}).sort({_id: -1}) // শেষ ইনসার্টেড (Mike)

দ্রষ্টব্য: findOne()-এ sort() চেইন করা যায় না সরাসরি। সেটার জন্য find().sort().limit(1) ব্যবহার করুন।

ব্যবহার ক্ষেত্র: ইউনিক আইডি দিয়ে লুকআপ, কনফিগারেশন ডকুমেন্ট, সেশন টোকেন ভেরিফিকেশন ইত্যাদি।

  1. MongoDB-তে শুধু একটি ডকুমেন্ট আপডেট করা ডেটা মুছে ফেলা ছাড়া

  2. MongoDB-এ নির্দিষ্ট ডকুমেন্টের ফিল্ড ইনক্রিমেন্ট করা ($inc অপারেটর)

  3. MongoDB-তে findOne() ব্যবহার করে একক ডকুমেন্ট রিট্রিভ করা

  4. MongoDB-এ এমবেডেড ডকুমেন্ট থেকে নির্দিষ্ট এলিমেন্ট খুঁজে বের করা