Před zahájením bych přidal dva body-
- Při použití mongo vždy vkládejte místa způsobem [délka, šířka]
- Uveďte prosím typ geometrie, kterou vkládáte. Podívejte se na mongoDB dokumentace pro více informací o typech.
K vašemu dotazu jsem přidal tři body jako váš dotaz a moje data vypadají níže-
> 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 ] }
Dal jsem typ:"Point", protože toto je vyhrazený klíč pro použití umístění sférického typu v mongo. Navíc jsem přidal [long, lat] pro umístění. Později jsem přidal index 2dSphere na pole loc.
db.test.createIndex({loc:"2dsphere"})
Poté jsem provedl níže uvedený dotaz, abych zjistil vzdálenost 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 }
Výše uvedený dotaz je pouze pro účely testování, abyste věděli vzdálenost. Udává vzdálenost v metrech, takže ji mohu snadno převést na km.
Nyní jsem provedl dotaz níže, abych našel místa od Marathahalli do 10 km. vzdálenost a dosáhl jsem požadovaného výsledku-
> db.test.find({ loc:{ $near:{ $geometry: {type: "Point" , coordinates:[77.6974,12.9591] }, $maxDistance:10000 }}})
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
Našel jsem několik problémů s přístupem, který jste zkoušel-
- Místa musí být uvedena způsobem [dlouhá, zeměpisná šířka].
- type:Pro použití umístění typu bodu je nutné zadat "Point". Je to vyhrazené klíčové slovo.
- Vzdálenost zde bude udávána v metrech. Na několika místech se bere v radiánech i v Mongu. Přečtěte si prosím toto mongoDB doc pro více informací o radiánské vzdálenosti.
Doufám, že vám to pomůže...mějte se hezky...:)