যেহেতু সাব-ডকুমেন্টগুলি দিয়ে মঙ্গোডিবি সংগ্রহের প্রশ্ন সম্পর্কে অনেক বিভ্রান্তি রয়েছে , তাই আমি উপরের উত্তরগুলি উদাহরণ সহ ব্যাখ্যা করার উপযুক্ত বলে মনে করেছি:
প্রথমে আমি সংগ্রহের মধ্যে দুটি মাত্র বস্তু সন্নিবেশ করলাম যথা message
:
> db.messages.find().pretty()
{
"_id" : ObjectId("5cce8e417d2e7b3fe9c93c32"),
"headers" : {
"From" : "reservations@marriott.com"
}
}
{
"_id" : ObjectId("5cce8eb97d2e7b3fe9c93c33"),
"headers" : {
"From" : "reservations@marriott.com",
"To" : "kprasad.iitd@gmail.com"
}
}
>
সুতরাং ক্যোয়ারির ফলাফল কী: db.messages.find({headers: {From: "reservations@marriott.com"} }).count()
এটি এক হওয়া উচিত কারণ নথির জন্য এই প্রশ্নের যেখানে headers
বস্তুর সমান {From: "reservations@marriott.com"}
, কেবলমাত্র অন্য কোনও ক্ষেত্র নেই বা আমাদের পুরো সাব-ডকুমেন্টটিকে ক্ষেত্রের মান হিসাবে নির্দিষ্ট করতে হবে।
সুতরাং @ এডমন্ডো ১৯৮৮ এর উত্তর অনুসারে
যদি subdocument সাথে মেলে মধ্যে উপ-নথি নথি নির্বাচন সমতা সাথে মেলে ক্ষেত্র অর্ডার সহ ঠিক নির্দিষ্ট subdocument, ।
উপরের বিবৃতি থেকে, নীচের কোয়েরির ফলাফলটি কী হওয়া উচিত?
> db.messages.find({headers: {To: "kprasad.iitd@gmail.com", From: "reservations@marriott.com"} }).count()
0
এবং যদি আমরা দ্বিতীয় ডকুমেন্টের সাব-ডকুমেন্টের ক্রম From
এবং তার To
মতোই পরিবর্তন করব ?
> db.messages.find({headers: {From: "reservations@marriott.com", To: "kprasad.iitd@gmail.com"} }).count()
1
সুতরাং, এটি ক্ষেত্রের ক্রম সহ নির্দিষ্ট সাব-ডকুমেন্টের সাথে ঠিক মেলে ।
ডট অপারেটর ব্যবহারের জন্য, আমি মনে করি এটি প্রত্যেকের জন্য খুব স্পষ্ট। নীচের ক্যোয়ারির ফলাফলটি দেখুন:
> db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count()
2
আমি আশা করি উপরোক্ত উদাহরণ সহ এই ব্যাখ্যাগুলি উপ-ডকুমেন্টগুলির সাথে কাউকে সন্ধানের বিষয়ে আরও স্পষ্ট করে তুলবে ।