باب کا تعارف
اس باب میں Golang MongoDB جغرافیائی پوزیشن کی کوئیریس کو متعارف کیا گیا ہے، جس میں مقامی معلومات کو محفوظ کرنے اور فاصلے کے لحاظ سے کوئیری کرنا شامل ہے۔
مقدمہ مقالے
نصیحت: اگر آپ کو MongoDB کوئیری کے سنٹیکس کا علم نہیں ہے تو پہلے MongoDB ٹیوٹوریل کو پڑھیں۔ Golang میں MongoDB کو آپریٹ کرنے کے لئے استعمال ہونے والا سنٹیکس وہی ہے۔
ٹیسٹ ڈیٹا تیار کریں
coll
کلیکشن میں جغرافیائی کوآرڈینیٹس شامل کرنے کے لئے کچھ ڈیٹا لکھیں۔ location
فیلڈ میں ہر اسٹور کے عرض و طولیات کی لمبائی اور چوڑائی محفوظ ہوتی ہیں۔
docs := []interface{}{
bson.D{
{"title", "ہائنان اسٹیمڈ چکن"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.240015, 39.899617}}
}},
},
bson.D{
{"title", "گوانگڈونگ باربی کیو پورک"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.268854, 39.900276}}
}},
},
bson.D{
{"title", "گوانگڈونگ روسٹ گوز"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.264905, 39.902778}}
}},
},
bson.D{
{"title", "شانکسی پین کیک"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.288938, 39.893164}}
}},
},
bson.D{
{"title", "ہنگژو دمپلنگز"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.286191, 39.910415}}
}},
}
}
نتیجہ, خرابی := coll.InsertMany(context.Background(), docs)
فاصلے کے زریعے کوئیری
فاصلے کی کوئیری کرنے کے لئے $near
اوپریٹر کا استعمال کریں۔ یہاں فرض کریں کہ coll
کلیکشن میں اسٹور ڈیٹا شامل ہے، اور location
فیلڈ میں ہر اسٹور کے عرض و طولیات شامل ہیں، نیچے دی گئی کوڈ میرے قریبی اسٹور کی کوئیری کرتا ہے (کم سے کم فاصلہ 1000 میٹر، زیادہ سے زیادہ فاصلې 5000 میٹر)۔
cursor, err := coll.Find(
context.Background(),
bson.D{{"location", bson.D{
{"$near": bson.D{
{"$geometry": bson.D{{"type":"Point"}, {"coordinates": bson.A{116.288938,39.893164}}}, // میری موجودہ عرض و طولیات
{"$minDistance": 1000}, // کمینے فاصلہ
{"$maxDistance": 5000} // زیادہ سے زیادہ فاصلہ
}}
}}}
)
متماثل ایکسپریشن:
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // میری عرض و طولیات
$minDistance: 1000, // کمینے فاصلہ
$maxDistance: 5000 // زیادے سے زیادے فاصلہ
}
}
}
یہ ایکسپریشن موجودہ MongoDB ایکسپریشن کے مطابق ہے، واحد فرق یہ ہے کہ یہ Golang کے ڈیٹا سٹرکچر کا استعمال کرکے دوبارہ بیان کیا گیا ہے۔