Das ist einfach nicht wahr,
"Um räumliche Indizes in Mongo nutzen zu können, benötigen Sie eine räumlich indizierte Sammlung, die nur einen Datensatz für jeden der Punkte des Polygons enthält. Ein zusätzlicher Wert für die Datensatz-ID Ihres räumlichen Datensatzes, der in einer anderen Sammlung lebt, lautet dann a Bounding-Box-Abfrage zum Abrufen von Datensatz-IDs aus einer [Sammlung] und Auswählen von [Datensatzdaten] aus der anderen [Sammlung], um einen Join effektiv zu emulieren. "
Ich habe USGS-Punktdaten in einer einzelnen Mongo-Sammlung mit Datensätzen gespeichert, die wie folgt aussehen:
> db.names.find({FEATURE_NAME: 'Mount Saint Helens', STATE_ALPHA: 'WA'})
{ "_id" : ObjectId("4e262106d7a99b7db41a4919"),
"_ID" : 1525360,
"FEATURE_NAME" : "Mount Saint Helens",
"FEATURE_CLASS" : "Summit",
"STATE_ALPHA" : "WA",
"STATE_FIPS" : 53,
"COUNTY_NAME" : "Skamania",
"COUNTY_FIPS" : "059",
"COORDS" : [ -122.1944, 46.1912 ],
"ELEV_IN_FT" : "8356" }
Ich bin in der Lage, Bounding-Box-Abfragen für diese Daten durchzuführen, die den gesamten Datensatz zurückgeben (ohne dass eine weitere Sammlung erforderlich ist).
Abfrage:
> box = [[-126.562500,45.089036], [-123.750000,47.040182]]
[ [ -126.5625, 45.089036 ], [ -123.75, 47.040182 ] ]
> db.names.find({"COORDS" : {"$within" : {"$box" : box}}, FEATURE_CLASS: "Summit"}, {FEATURE_NAME: true, COUNTY_NAME: true, STATE_ALPHA: true, ELEV_IN_FEET: true}).limit(5);
Antwort:
{ "_id" : ObjectId("4e2620f8d7a99b7db4146cec"), "FEATURE_NAME" : "Harlocker Hill", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Coos" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414a349"), "FEATURE_NAME" : "Neskowin Crest", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414a105"), "FEATURE_NAME" : "Miles Mountain", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414934a"), "FEATURE_NAME" : "Mount Gauldy", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db4149d06"), "FEATURE_NAME" : "Little Hebo", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Yamhill" }
Mongo bietet auch die Möglichkeit, Suchen nach nächsten Nachbarn sowie nach Punkten in Polygonen durchzuführen. Dies ist auf mongodb.org gut dokumentiert