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

جیوسپیشل ڈیٹا میں عام طور پر نقطے، لکیریں، اور شکلیں شامل ہوتی ہیں۔

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

عملی استعمال میں: ایک دکان کا مقام، "میں کہاں ہوں؟"، اور "اسکول کہاں ہے؟" کو تمام کورڈینیٹس کا استعمال کر کے ظاہر کیا جا سکتا ہے۔ ایک کیمپس یا ایک شاپنگ مال کی وسعت بیان کرنے کے لئے شکلوں کی ضرورت ہوتی ہے۔

جیوJSON آبجیکٹ

مونگو ڈی بی جیوJSON آبجیکٹ کا استعمال جیوسپیشل معلومات کو ظاہر کرنے کے لئے کرتا ہے۔

عام جیوJSON قسموں میں شامل ہیں:

  • نقطہ - ایک کورڈینیٹ نقطہ کو ظاہر کرتے ہیں
  • لائن اسٹرنگ - ایک لائن کو ظاہر کرتے ہیں
  • پالیگان - ایک گوشہ ظاہر کرتے ہیں

مونگو ڈی بی فیلڈز میں جیوJSON آبجیکٹس کو سٹور کرنے کا فارمیٹ مندرجہ ذیل ہے:

<field>: { type: <geojson type> , coordinates: <coordinates> }

وضاحت:

  • - فیلڈ کا نام
  • type - جیوJSON قسم
  • coordinates - کورڈینیٹ نقطوں کا ایک ایرے ۔ فارمیٹ مختلف جیوJSON قسموں کے لئے مختلف ہوتا ہے۔

مثال:

location: {
      type: "Point",  // جیوسپیشل ڈیٹا کی قسم، اس مقام میں، یہ ایک کورڈینیٹ نقطہ ہے
      coordinates: [-73.856077, 40.848447] // لانگیٹوڈ، لیٹٹوڈ
}

وضاحت: لوکیشن فیلڈ کورڈینیٹ نقطہ قسم کی جیوسپیشل ڈیٹا کو سٹور کرتا ہے۔

کورڈینیٹ نقطہ (پوائنٹ)

فارمیٹ:

{ type: "Point", coordinates: [ longitude, latitude ] }

مثال:

{ type: "Point", coordinates: [ 40, 5 ] }

لائن (لازمی لکیر)

فارمیٹ:

{ type: "LineString", coordinates: [ point1, point2, ...] }

مثال:

{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }

پالیگان

ایک سے زیادہ لائنوں کی تشکیل ہو سکتی ہے۔ فارمیٹ:

{
  type: "Polygon",
  coordinates: [ 
		line1,
		line2,
		....
	]
}

نوٹ: ہر لائن سیگمنٹ کے شروع اور اختتامی کورڈینیٹس ایک ہونی چاہئیں تاکہ ایک بند شکل بن سکے۔

ایک لائن سیگمنٹ سے تشکیل شدہ شکل

{
  type: "Polygon",
  coordinates: [
  		[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0  ] ] // لائن سیگمنٹ کے کورڈینیٹ نقطے، نوٹ کریں کہ پہلے اور آخری کورڈینیٹس ایک ہیں۔
	]
}

متعدد لائن سیگمنٹس سے تشکیل شدہ شکل

{
  type : "Polygon",
  coordinates : [
     [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], // لائن سیگمنٹ 1
     [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ]  // لائن سیگمنٹ 2
  ]
}

جیوسپیشل انڈیکس

مونگو ڈی بی دو قسم کے جیوسپیشل انڈیکس کا سپورٹ کرتا ہے تاکہ جیوJSON ڈیٹا کے کوئیری کو تیز کیا جا سکے۔

2ڈسفیر

یہ ایک گول فلک کا جیومیٹری انڈیکس قسم ہے، جو مطلوبہ کورڈینیٹس کے درمیان فاصلہ حساب کرتے وقت، 2ڈسفیر زمین کو ایک گیندرا سمجھتا ہے۔

2ڈسفیر انڈیکس بنانے کی مثال:

db.collection.createIndex( { location : "2dsphere" } )

لوکیشن فیلڈ کے لئے ایک انڈیکس بناتا ہے۔

2ڈی

2ڈ ایک پلین جیومیٹری کی قسم ہے جو دو نقطوں کے درمیان فاصلہ حساب کرنے کے لئے استعمال ہوتی ہے جیسے کہ گردے میں ہوں۔ 2ڈ انڈیکس بنانے کی مثال:

db.collection.createIndex( { location : "2d" } )

یہ لوکیشن فیلڈ کے لئے ایک انڈیکس بناتا ہے۔

جیوسپیشل کوئیری کی اقسام

جیوسپیشل کوئیریاں تمام جیومیٹریائی حساباؤں سے متعلق ہوتی ہیں۔ نیچے میں مونگو ڈی بی دوار جی سپورٹ کرتے ہیں:

  • $geoIntersects - ایک مخصوص جیومیٹریائی شکل کا انٹرسیکشن میچ کرنے کے لئے استعمال ہوتا ہے۔
  • $geoWithin - مخصوص جیومیٹریائی علاقے میں موجود دستاویزات کا میچ ہوتا ہے۔
  • $near - عموماً ایک مخصوص کورڈینیٹ نقطے کے قریب ترین دستاویزات کو کوئیری کرنے کے لئے استعمال ہوتا ہے۔

نوٹ: جیوسپیشل کوئیریوں کی مزید معلومات کے لئے، براہ کرم مندرجہ ذیل بابوں کی حوالے سے رجوع کریں۔