یہ باب مانگو ڈی بی کی جیوسپیشل کوئری کا تعارف کراتا ہے، جو ہندسوں کی مداخلت اور محتوی کی کوئری کو سپورٹ کرتا ہے۔

ایپلیکیشن مواقع:

  • نقشے پر چکرے کھینچیں اور چکرے کے اندر ڈیٹا کو کوئری کریں۔

پیش نظر ٹٹوریل

مانگو ڈی بی کے لیے جیوسپیشل ڈیٹا اسٹوریج فارمیٹ

فاصلہ کے بنیاد پر ڈیٹا کو کوئری کرنے کے لیے پیش نظرات مندرجہ ذیل ہیں:

  • ہر دستاویز ڈیٹا میں ایک فیلڈ ہوتا ہے جو ہموار کوآرڈینیٹ ڈیٹا کو ذخیرہ کرتا ہے، مثال کے طور پر: مقام فیلڈ میں دکان کے کوآرڈینیٹس ذخیرہ کرتا ہے۔
  • 2dsphere یا 2d مقامی انڈیکس بنائیں۔

$geoWithin آپریٹر

عام طور پر یہ استعمال کیا جاتا ہے کہ مخصوص ہندسوی حدود کے اندر شامل کوآرڈینیٹ پوائنٹس کا کوئری کیا جائے، مثلاً: نقشے پر خانے تلاش کرتے وقت، نقشے پر ایک علاقہ کھینچ کر اس علاقے کے اندر گھروں کی تلاش کریں۔

فارمیٹ سنٹیکس:

{
   <لوکیشن فیلڈ>: { // کوئری فیلڈ
      $geoWithin: {
         $geometry: {
            type:  , // صرف پالیگان یا ملٹی پالیگان کو سپورٹ کرتا ہے۔
            coordinates: [ <coordinates> ]  // ہندسوی کوآرڈینیٹ پوائنٹس کی مجموعی
         }
      }
   }
}

مثال:

db.places.find(
   {
     loc: { // loc فیلڈ کوآرڈینیٹ ڈیٹا کو ذخیرہ کرتا ہے
       $geoWithin: {
          $geometry: {
             type: "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ] // اس ہندسوی علاقے کے اندر ڈیٹا تلاش کریں
          }
       }
     }
   }
)

مخصوص ہندسوی علاقے کے اندر دستاویز ڈیٹا کی کوئری کریں۔

$geoIntersects آپریٹر

$geoWithin سے فرق یہ ہے کہ $geoIntersects دو ہندسووں کے درمیان تقاطع کا حصول دو ہندسووں کے درمیان تقاطع کا حصول دو ہندسووں کے درمیان تقاطع کا حصول کرنے کے لئے استعمال ہوتا ہے۔

فارمیٹ:

{
  <location field>: { // ہندسوی کوآرڈینیٹ پوائنٹس کو ذخیرہ کرنے والا فیلڈ
     $geoIntersects: {
        $geometry: {
           type: "<جیوجسون آبجکٹ کی قسم>" , // ہندسی قسم
           coordinates: [ <coordinates> ] // ہندسوی کوآرڈینیٹ پوائنٹس کی مجموعی، اس ہندسوی آبجیکٹ کے تقاطع والے ڈیٹا تلاش کریں
        }
     }
  }
}

مثال:

db.places.find(
   {
     loc: { // loc فیلڈ ہندسوی شکل کو ذخیرہ کرتا ہے
       $geoIntersects: {
          $geometry: {
             type: "Polygon" ,
             coordinates: [
               [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] // اس ہندسوی شکل کے تقاطع والے ڈیٹا تلاش کریں
             ]
          }
       }
     }
   }
)