اس باب میں MongoDB کا ایک جیوسپیشل کوئری فنکشن پیش کیا گیا ہے، جو مسافت کے بنیاد پر دستاویز ڈیٹا کا سوال کرنے کے لئے ہے۔
اہم مواقع: قریبی دکانوں کی تلاش کرنا، اور قریبی لوگوں کا پتہ لگانا۔
پیش شرط ٹیوٹوریل
MongoDB Geospatial ڈیٹا اسٹوریج فارمیٹ
مسافت کے بنیاد پر ڈیٹا کو سوال کرنے کے لیے درکارات مندرجہ ذیل ہیں:
- ہر دستاویز ڈیٹا میں ایک فیلڈ شامل ہے جو کوآرڈینیٹ ڈیٹا محفوظ کرتا ہے، مثلاً:
location
فیلڈ ایک دکان کے کوآرڈینیٹس کو محفوظ کرتا ہے۔ - 2dsphere یا 2d spatial انڈیکس بنائیں۔
$نزدیکی آپریٹر
MongoDB $نزدیکی آپریٹر استعمال کرتا ہے تاکہ مسافت کے بنیاد پر ڈاکومینٹ ڈیٹا کو سوال کرے۔
فارمیٹ:
{
<location field>: { // کوآرڈینیٹ ڈیٹا کو محفوظ کرنے والا فیلڈ
$near: {
$geometry: { // مقابلہ کے لئے حوالہ کوآرڈینیٹس سیٹ کریں
type: "Point" ,
coordinates: [ طول, عرض ]
},
$maxDistance: فاصلے کی زیادہ سے زیادہ مقدار, meters, میں,
$minDistance: فاصلے کی کم سے کم مقدار, meters, میں
}
}
}
نوٹ: $نزدیکی کوئری کے ذریعے واپسی ڈیٹا قریب سے دور ترتیب دیا جاتا ہے۔
مثال
تصور کریں کہ shop
کی کالیکشن میں دکان ڈیٹا محفوظ ہے، جہاں location
فیلڈ ہر دکان کے کوآرڈینیٹس کو محفوظ کرتا ہے۔ زیر میں دی گئی کوئری میرے لئے سب سے قریبی دکان تلاش کرتی ہے (کم سے کم فاصلہ 1000 میٹر، زیادہ سے زیادہ فاصلہ 5000 میٹر)۔
db.shop.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // میرے کوآرڈینیٹس
$minDistance: 1000, // کم سے کم فاصلہ
$maxDistance: 5000 // زیادہ سے زیادہ فاصلہ
}
}
}
)