2016-05-23 6 views
2

Meine Mongo Version ist 3.2.6maxDistance in mongodb: Problem bei der Suche nach in der Nähe von Daten

Meine Tabellen restaurant_locations ist.

Ich habe wie unten angegeben Index:

db.restaurant_locations._ensureIndex({'location': '2dsphere'}); 

Daten in dieser Tabelle gespeichert ist, wie unten:

> db.restaurant_locations.find().pretty(); 
{ 
     "_id" : ObjectId("573ff477df3c12bdd6463d07"), 
     "location" : { 
       "type" : "Point", 
       "coordinates" : [ 
         72.5220332, 
         23.0656791 
       ] 
     } 
} 
{ 
     "_id" : ObjectId("573ff5badf3c12bdd6463d08"), 
     "location" : { 
       "type" : "Point", 
       "coordinates" : [ 
         62.5220332, 
         13.0656791 
       ] 
     } 
} 

Nun, wenn ich unten Abfrage Feuer:

db.restaurant_locations.find({ 
    location: { 
    $near: { 
     $geometry: { 
      type: 'Point', 
      coordinates: [ 70, 20 ] 
     }, 
    $maxDistance: 100000000 
    } 
    } 
}); 

ich sowohl die Aufzeichnungen als Ausgabe:

{ "_id" : ObjectId("573ff477df3c12bdd6463d07"), "location" : { "type" : "Point", "coordinates" : [ 72.5220332, 23.0656791 ] } } 
{ "_id" : ObjectId("573ff5badf3c12bdd6463d08"), "location" : { "type" : "Point", "coordinates" : [ 62.5220332, 13.0656791 ] } } 

Nun, wenn ich unten Abfrage ausführen:

db.restaurant_locations.find({ 
    location: { 
    $near: { 
     $geometry: { 
      type: 'Point', 
      coordinates: [ 70, 20 ] 
     }, 
    $maxDistance: 1000000 
    } 
    } 
}); 

ich nur einen Datensatz als Ausgabe:

{ "_id" : ObjectId("573ff477df3c12bdd6463d07"), "location" : { "type" : "Point", "coordinates" : [ 72.5220332, 23.0656791 ] } } 
  1. ich nicht genau, wie ich immer $ maxDistance Arbeit.
  2. Ich mag Restaurants von 10 km in einem Abstand zu finden, was ist dann die genaue Sache, ich brauche in $ maxDistance passieren?
  3. meine Koordinaten sind 40 Angenommen und 20, also wenn ich Restaurants wollen innerhalb 10 km, wird über zwei Datensätze Anzeige?

Ich habe viele mongodb docs, Stackoverflow Fragen genannt, aber ich bin nicht genaue Vorstellung bekommen, wie es funktioniert

Vielen Dank im Voraus für die Hilfe

Antwort

0

I am not getting exactly how $maxDistance work.

zu erhalten, um die maxDistance arbeiten Sie die $nearSphere Funktion

Ihre Anfrage somet wird verwenden müssen sein Hing wie folgt aus:

location: { 
    $nearSphere: { 
     $geometry: { 
      type: 'Point', 
      coordinates: [ 70, 20 ] 
     }, 
    $maxDistance: 10000 
    } 
    } 

I want to find restaurants within a distance of 10 kms,

Sie diese von 1000 als Mongo Auflösung zu multiplizieren ist in Metern

Suppose my co-ordinates are 40 and 20, so if I want restaurants within 10kms, will above two records display?

Ja, aber Sie müssen sicher sein, dass Sie geben zuerst den Längengrad und dann den Breitengrad an.

+0

I ausgeführt Abfrage von Ihnen festgelegt, aber es ist immer noch keine Ausgabe geben, wenn ich „10000“ ersetzen „1000000“, bin immer einen Rekord –

Verwandte Themen