Quiero crear un índice 2dsphere en el campo "características" en MongoDB. Pero contiene una matriz de GeoJSON LineStrings. Sin esta matriz, podría crear un índice de 2dsphere solo para una sola LineString de GeoJSON como db.collection.createIndex({ loc : "2dsphere" ) . Quiero realizar una consulta espacial como collection.find({ $features: { $geometry: bounding_box } })
¿Alguien sabe cómo crear una 2dsphere para la matriz de objetos GeoJSON?
{ "_id" : ObjectId("..."), "name" : "street_segment_names", "features" : [ { "type" : "Feature", "geometry" : { "type" : "LineString", "coordinates" : [ [.,.],[.,.],[.,.] ] }, "properties" : { "speed_limit" : 20 } }, { "type" : "Feature", "geometry" : { "type" : "LineString", "coordinates" : [ [.,.],[.,.],[.,.] ] }, "properties" : { "speed_limit" : 30 } } ] }MongoDB no admite "Característica" como tipo de objeto GeoJSON. Consulte https://docs.mongodb.com/manual/reference/geojson/#geojson-objects
La estructura que se muestra en la pregunta incluye un campo de "geometría" en el objeto de características que parece ser un tipo de objeto admitido.
Puede crear un índice en ese campo usando:
db.collection.createIndex({"features.geometry":"2dsphere"})Dependiendo de su objetivo con la consulta de "cuadro delimitador", puede usar $geoWithin o $geoIntersects , como
db.collection.find({ "features.geometry":{ $geoWithin: { $geometry: { type: <"Polygon" or "MultiPolygon"> , coordinates: [ <coordinates> ] } } } })