অধ্যায় পরিচিতি
এই অধ্যায়টি Golang MongoDB জিওস্পেশাল ক্যুয়ারি সম্পর্কে পরিচিতি দেয়, যা লোকেশন তথ্য সংরক্ষণ এবং দূরত্ব অনুসন্ধান করার উপর ভিত্তি করে।
প্রাথমিক টিউটোরিয়াল
পরামর্শ: যদি আপনি MongoDB ক্যুয়ারি সিনট্যাক্সে পরিচিত না হন, তবে প্রথমে MongoDB টিউটোরিয়ালটি পড়ুন। Golang এ MongoDB চালানোর জন্য ব্যবহৃত অভিব্যক্তি সিনট্যাক্স একই থাকে।
পরীক্ষা উপায়ের উপকরণ
coll
কালেকশনে ভৌগোলিক সংযোগাংশ ধারণ করা কিছু ডেটা লিখুন। location
ফিল্ডটি স্টোরের দোকানগুলির অগ্রাধিকার এবং দ্রাঘিমাংশ সংখ্যা রাখে।
docs := []interface{}{
bson.D{
{"title", "Hainan Steamed Chicken"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.240015, 39.899617}}
}},
},
bson.D{
{"title", "Guangdong BBQ Pork"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.268854, 39.900276}}
}},
},
bson.D{
{"title", "Guangdong Roast Goose"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.264905, 39.902778}}
}},
},
bson.D{
{"title", "Shanxi Pancake"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.288938, 39.893164}}
}},
},
bson.D{
{"title", "Hangzhou Dumplings"},
{"location", bson.D{
{"type": "Point"},
{"coordinates": bson.A{116.286191, 39.910415}}
}},
}
}
result, err := 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 এর ডেটা নির্মাণ ব্যবহার করে মুখর করা একই একটি বিবেচনা করার একটি ভিন্নতা হল।