Database Reference
In-Depth Information
namens mongo _ cities1000.json , die die Daten jeder Stadt auf der Welt mit
über 1000 Einwohnern enthält. Laden Sie diese Datei herunter und führen
Sie das folgende Skript aus, um die Daten in den mongos -Server zu importie-
ren:
$ mongoimport -h localhost:27020 -db test --collection cities \
--type json mongo _ cities1000.json
In der mongos -Console geben Sie dann use test ein, um aus der admin -Um-
gebung wieder in die test -Umgebung zu wechseln.
Geodaten-Queries
Mongo beherrscht von Haus aus einen netten Trick. Auch wenn wir uns an
diesem Tag auf Server-Setups konzentriert haben, wäre kein Tag komplett
ohne ein wenig Rambazamba, und das ist Mongos Fähigkeit, Geodaten abfra-
gen zu können. Stellen Sie zuerst die Verbindung mit dem mongos Sharding-
Server her.
$ mongo localhost:27020
Den Kern des Geodaten-Geheimnisses bildet die Indexierung. Es handelt sich
um eine spezielle Form der Indexierung von Geodaten, die als Geohash be-
zeichnet wird und die nicht nur bestimmte Werte oder Wertebereiche sehr
schnell findet, sondern auch in der Nähe liegende Werte. Praktischerweise
haben wir am Ende des vorigen Abschnitts auch sehr viele Geodaten instal-
liert. Um sie abfragen zu können, besteht der erste Schritt in der Indexierung
der Daten im location-Feld. Der 2te Index muss für die beiden Werte-Felder
gesetzt werden, in unserem Fall ein Hash (z. B. { longitude:1.48453, lati-
tude:42.57205 } ), doch es könnte sich ebenso gut um ein Array (zum Beispiel
[1.48453, 42.57205] )handeln.
> db.cities.ensureIndex({ location : "2d" })
Wenn wir nicht mit Sharding arbeiten würden, könnten wir Städte einfach an
oder in der Nähe eines Ortes abfragen. Bei unserer aktuellen Mongo-Version
funktioniert der folgende Befehl aber nur bei nicht verteilten Collections.
> db.cities.find({ location : { $near : [45.52, -122.67] } }).limit(5)
Das dürfte in zukünftigen Versionen auch mit verteilten Collections funktio-
nieren. Bis dahin müssen Sie die verteilte Collection cities über den geo-
Near() -Befehl nach Städten in der Nähe eines bestimmten Ortes abfragen.
Hier ein beispielhaftes Ergebnis:
Search WWH ::




Custom Search