अध्याय परिचय

यह अध्याय 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}}
		}},
	}
}

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 के डेटा संरचना का उपयोग करके पुनः वर्णित किया गया है।