এই অধ্যায়টি MongoDB এর ভূ-স্থানিক অনুসন্ধানের পরিচিতি দেয়, যা জ্যামিতিক ছড়ি এবং অবস্থান অনুসন্ধান সমর্থন করে।

অ্যাপ্লিকেশন সেনারিও:

  • মানচিত্রে একটি বৃত্ত আঁকুন এবং সেই বৃত্তের ভিতরে ডেটা অনুসন্ধান করুন।

আবশ্যক টিউটোরিয়াল

MongoDB এর জন্য ভূ-স্থানিক ডেটা সংরক্ষণের ফরম্যাট

দূরত্বের উপর ভিত্তি করে ডেটা অনুসন্ধানের জন্য প্রারেক হল:

  • প্রতিটি ডকুমেন্টের ডেটা কোয়ার্ড ডেটা সংরক্ষণের জন্য একটি ফিল্ড থাকা আবশ্যক, উদাহরণ: লোকেশন ফিল্ড স্টোর করে একটি দোকানের কোয়ার্ডগুলি।
  • 2dsphere বা 2d স্থানিক ইনডেক্স তৈরি করুন।

$geoWithin অপারেটর

এটি সচরাচর ব্যবহৃত হয় নির্দিষ্ট জ্যামিতি ব্যাপ্তির মধ্যে অন্তর্ভুক্ত কোয়ার্ড পয়েন্টগুলির জন্য, উদাহরণ: মানচিত্রে আবাসিক খুঁজতে যখন একটি এলাকা আঁকি, মানচিত্রে সেই এলাকার ভিতর থাকা ঘর খুঁজে নেওয়া।

সিনট্যাক্স ফরম্যাট:

{
   <লোকেশন ফিল্ড>: { // কুয়ার্ড ফিল্ড
      $geoWithin: {
         $geometry: {
            type:  , // কেবলমাত্র বহুভূমি বা মাল্টিপলিগন সাপোর্ট করে।
            coordinates: [ <কোয়ার্ড> ]  // জ্যামিতিযুক্ত কোয়ার্ড পয়েন্টের সংগ্রহ
         }
      }
   }
}

উদাহরণ:

db.places.find(
   {
     loc: { // loc ফিল্ড মৌলিক তথ্য সংরক্ষণ করে
       $geoWithin: {
          $geometry: {
             type: "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ] // এই জ্যামিতিক এলাকার ভিতরে ডেটা খুঁজে নিন
          }
       }
     }
   }
)

places সংগ্রহের নির্দিষ্ট জ্যামিতিযুক্ত অঞ্চলের মধ্যে ডকুমেন্ট ডেটা জন্য অনুসন্ধান করুন।

$geoIntersects অপারেটর

$geoWithin থেকে পার্থক্য হল, $geoIntersects ব্যবহার করা হয় দুটি জ্যামিতির মধ্যে কোনো ছপির উপস্থিতি আছে কিনা তা নির্ধারণ করতে।

ফরম্যাট:

{
  <লোকেশন ফিল্ড>: { // জ্যামিতিক কোয়ার্ড পয়েন্ট সংরক্ষণ করা ফিল্ড
     $geoIntersects: {
        $geometry: {
           type: "<জিওজন অবজেক্ট ধরন>" , // জ্যামিতিক ধরন
           coordinates: [ <কোয়ার্ড> ] // জ্যামিতিক কোয়ার্ড পয়েন্টের সংগ্রহ, এই জ্যামিতির সাথে ছপির কোয়ার্ড পয়েন্ট অনুসন্ধান করুন
        }
     }
  }
}

উদাহরণ:

db.places.find(
   {
     loc: { // loc ফিল্ড এলাকা ডেটা সংরক্ষণ করে, এটি একটি জ্যামিতিক আকৃতি
       $geoIntersects: {
          $geometry: {
             type: "Polygon" ,
             coordinates: [
               [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] // এই জ্যামিতিক আকৃতির সাথে ছপির ডেটা অনুসন্ধান করুন
             ]
          }
       }
     }
   }
)