MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb filtruje dokumenty z długością, szerokością geograficzną i określoną odległością

Przed rozpoczęciem dodałbym dwa punkty-

  1. Używając mongo, zawsze wstawiaj lokalizacje w sposób [długo., łac.]
  2. 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...:)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - zaćmienie

  2. Zaktualizuj tablicę Mongo:usuń klucz dynamiczny

  3. Odpowiednik opcji mongo's out:reduce w hadoop

  4. Express MongoDB find() na podstawie pola _id

  5. Kiedy należy używać bazy danych NoSQL zamiast relacyjnej bazy danych? Czy można używać obu w tej samej witrynie?