Przed rozpoczęciem dodałbym dwa punkty-
- Używając mongo, zawsze wstawiaj lokalizacje w sposób [długo., łac.]
- Proszę określić typ wstawianej geometrii. Zapoznaj się z dokumentacją aby uzyskać więcej informacji o typach.
Przechodząc do twojego zapytania, dodałem trzy punkty jako twoje pytanie, a moje dane wyglądają jak poniżej-
> db.test.find()
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ] }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ] }
Podałem typ:"Point", ponieważ jest to zarezerwowany klucz do używania lokalizacji typu sferycznego w mongo. Ponadto dodałem [długi, łat] dla lokalizacji.Później dodałem indeks 2dSphere w polu loc.
db.test.createIndex({loc:"2dsphere"})
Następnie wykonałem poniższe zapytanie, aby poznać odległość od Marathahalli [77.6974,12.9591]-
> db.test.aggregate([ {$geoNear: { near :{type: "Point", coordinates:[77.6974,12
.9591]}, distanceField: "distance", spherical: true } } ])
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ], "distance": 9583.305405402776 }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ], "distance" : 12391.53898270671 }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ], "distance": 13828.057829128267 }
Powyższe zapytanie służy tylko do testowania, aby poznać odległość. Podaje odległość w metrach, więc mogę ją łatwo przeliczyć na kilometry.
Teraz uruchomiłem poniższe zapytanie, aby znaleźć lokalizacje z Marathahalli w promieniu 10 km. odległość i uzyskałem pożądany rezultat-
> db.test.find({ loc:{ $near:{ $geometry: {type: "Point" , coordinates:[77.6974,12.9591] }, $maxDistance:10000 }}})
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
Znalazłem kilka problemów z podejściem, które próbowałeś-
- Lokalizacja musi być podana w [długi, łac.] sposób.
- type:"Punkt" musi być podany, aby użyć lokalizacji typu punktu. Jest to zastrzeżone słowo kluczowe.
- Odległość będzie tutaj podawana w metrach. W kilku miejscach podawana jest w radianach, jak również w Mongo. Proszę zapoznać się z ten Dokumentacja mongoDB, aby uzyskać więcej informacji na temat odległości w radianach.
Mam nadzieję, że ci to pomoże... miłego dnia...:)