এই অধ্যায়টি MongoDB এর ভূ-স্থানিক অনুসন্ধানের পরিচিতি দেয়, যা জ্যামিতিক ছড়ি এবং অবস্থান অনুসন্ধান সমর্থন করে।
অ্যাপ্লিকেশন সেনারিও:
- মানচিত্রে একটি বৃত্ত আঁকুন এবং সেই বৃত্তের ভিতরে ডেটা অনুসন্ধান করুন।
আবশ্যক টিউটোরিয়াল
MongoDB এর জন্য ভূ-স্থানিক ডেটা সংরক্ষণের ফরম্যাট
দূরত্বের উপর ভিত্তি করে ডেটা অনুসন্ধানের জন্য প্রারেক হল:
- প্রতিটি ডকুমেন্টের ডেটা কোয়ার্ড ডেটা সংরক্ষণের জন্য একটি ফিল্ড থাকা আবশ্যক, উদাহরণ: লোকেশন ফিল্ড স্টোর করে একটি দোকানের কোয়ার্ডগুলি।
- 2dsphere বা 2d স্থানিক ইনডেক্স তৈরি করুন।
$geoWithin অপারেটর
এটি সচরাচর ব্যবহৃত হয় নির্দিষ্ট জ্যামিতি ব্যাপ্তির মধ্যে অন্তর্ভুক্ত কোয়ার্ড পয়েন্টগুলির জন্য, উদাহরণ: মানচিত্রে আবাসিক খুঁজতে যখন একটি এলাকা আঁকি, মানচিত্রে সেই এলাকার ভিতর থাকা ঘর খুঁজে নেওয়া।
সিনট্যাক্স ফরম্যাট:
{
<লোকেশন ফিল্ড>: { // কুয়ার্ড ফিল্ড
$geoWithin: {
$geometry: {
type: , // কেবলমাত্র বহুভূমি বা মাল্টিপলিগন সাপোর্ট করে।
coordinates: [ <কোয়ার্ড> ] // জ্যামিতিযুক্ত কোয়ার্ড পয়েন্টের সংগ্রহ
}
}
}
}
উদাহরণ:
db.places.find(
{
loc: { // loc ফিল্ড মৌলিক তথ্য সংরক্ষণ করে
$geoWithin: {
$geometry: {
type: "Polygon" ,
coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ] // এই জ্যামিতিক এলাকার ভিতরে ডেটা খুঁজে নিন
}
}
}
}
)
places সংগ্রহের নির্দিষ্ট জ্যামিতিযুক্ত অঞ্চলের মধ্যে ডকুমেন্ট ডেটা জন্য অনুসন্ধান করুন।
$geoIntersects অপারেটর
$geoWithin থেকে পার্থক্য হল, $geoIntersects ব্যবহার করা হয় দুটি জ্যামিতির মধ্যে কোনো ছপির উপস্থিতি আছে কিনা তা নির্ধারণ করতে।
ফরম্যাট:
{
<লোকেশন ফিল্ড>: { // জ্যামিতিক কোয়ার্ড পয়েন্ট সংরক্ষণ করা ফিল্ড
$geoIntersects: {
$geometry: {
type: "<জিওজন অবজেক্ট ধরন>" , // জ্যামিতিক ধরন
coordinates: [ <কোয়ার্ড> ] // জ্যামিতিক কোয়ার্ড পয়েন্টের সংগ্রহ, এই জ্যামিতির সাথে ছপির কোয়ার্ড পয়েন্ট অনুসন্ধান করুন
}
}
}
}
উদাহরণ:
db.places.find(
{
loc: { // loc ফিল্ড এলাকা ডেটা সংরক্ষণ করে, এটি একটি জ্যামিতিক আকৃতি
$geoIntersects: {
$geometry: {
type: "Polygon" ,
coordinates: [
[ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] // এই জ্যামিতিক আকৃতির সাথে ছপির ডেটা অনুসন্ধান করুন
]
}
}
}
}
)