mongodb geoNear vs nahe

8

Es sieht so aus, als ob mongodb zwei ähnliche Funktionen für georäumliche Abfragen anbietet - $near und $geoNear . Laut den Mongo Docs

  

Der Befehl geoNear bietet eine Alternative zum Operator $ nea. Im   Zusätzlich zu der Funktionalität von $ near, gibt geoNear zusätzliche Informationen zurück   Diagnoseinformationen.

Es sieht so aus, als ob geoNear eine Obermenge der near -Funktionalität bereitstellt. Zum Beispiel scheint near nur die nächsten 100 Dokumente zurückzugeben, während geoNear ein Maximum angeben kann. Gibt es einen Grund, near anstelle von geoNear zu verwenden? Ist einer effizienter als der andere?

    
Jeff Storey 21.03.2013, 00:57
quelle

3 Antworten

15

Die Effizienz sollte für beide identisch sein.

Die Haupteinschränkung von

geoNear besteht darin, dass als Befehl ein Ergebnis zurückgegeben werden kann, das auf die maximale Dokumentgröße eingestellt ist, da alle übereinstimmenden Dokumente in einem einzigen Ergebnisdokument zurückgegeben werden. Es erfordert auch, dass jedem Ergebnisdokument ein Entfernungsfeld hinzugefügt wird, das abhängig von Ihrer Verwendung ein Problem darstellt oder nicht.

$near ist ein Abfrageoperator, daher können die Ergebnisse größer sein als ein einzelnes Dokument (sie werden immer noch in einer einzigen Antwort, aber nicht in einem einzelnen Dokument zurückgegeben). Sie können auch die maximale Anzahl von Dokumenten über das Limit der Abfrage () festlegen.

Ich empfehle Benutzern, bei $near zu bleiben, es sei denn, sie benötigen die diagnostics (z. B. Abstand oder Position, die gefunden wurde) aus dem Befehl geonear .

    
Rob Moore 21.03.2013, 02:48
quelle
1

Die Grenze von 100 Dokumenten mit GeoNear ist das Standardverhalten, aber Sie können einfach die Felder num wie in der mongodb-Dokumentation beschrieben einstellen ( Ссылка )

Standard ist auf 100 gesetzt, aber Sie können mehr einstellen. Leider fehlt der Skip -Parameter im Moment (Siehe Ссылка )

    
Kim D. 21.03.2013 04:14
quelle
1

Dies sind wesentliche Unterschiede: -

  1. $ geoNear gibt Ihnen auch die Entfernung vom Punkt, aber $ near Befehl nicht.

  2. Der Befehl
  3. $ geoNear erfordert, dass die Auflistung höchstens einen 2d-Index und / oder nur einen 2dsphere-Index aufweist, während Geospatial-Abfrageoperatoren wie $ near und $ geoWithin zulassen, dass Sammlungen mehrere geospatiale Indizes aufweisen. Dies liegt daran, dass im Befehl $ geoNear keine Option zum Angeben des Felds vorhanden ist, in dem Sie suchen möchten, wobei Sie wie im Befehl $ near den Feldnamen angeben können.

Manish 25.08.2015 07:15
quelle

Tags und Links