Skip to content

Latest commit

 

History

History
90 lines (52 loc) · 8.49 KB

README.md

File metadata and controls

90 lines (52 loc) · 8.49 KB

Índices 2dsphere

Descripción general

Un 2dsphereíndice admite consultas que calculan geometrías en una esfera similar a la tierra. 2dsphereindex admite todas las consultas geoespaciales de MongoDB: consultas de inclusión, intersección y proximidad. Para obtener más información sobre consultas geoespaciales, consulte Consultas geoespaciales .

El 2dsphereíndice admite datos almacenados como objetos GeoJSON y pares de coordenadas heredados (consulte también 2dsphereRestricciones de campos indexados ). Para los pares de coordenadas heredados, el índice convierte los datos a GeoJSON Point.

Versiones

2dsphere Versión del índice Descripción
Versión 3 MongoDB 3.2 presenta una versión 3 de 2dsphereíndices. La versión 3 es la versión predeterminada de los 2dsphereíndices creados en MongoDB 3.2 y posteriores.
Versión 2 MongoDB 2.6 presenta una versión 2 de 2dsphereíndices. La versión 2 es la versión predeterminada de los 2dsphereíndices creados en las series MongoDB 2.6 y 3.0.

Para anular la versión predeterminada y especificar una versión diferente, incluya la opción { "2dsphereIndexVersion": <version> }al crear el índice.

sparsePropiedad

Los 2dsphereíndices de la versión 2 y posteriores siempre son escasos e ignoran la opción escasa . Si un documento carece de un 2dspherecampo de índice (o el campo es nulluna matriz vacía), MongoDB no agrega una entrada para el documento al índice. Para inserciones, MongoDB inserta el documento pero no lo agrega al 2dsphereíndice.

Para un índice compuesto que incluye una 2dsphereclave de índice junto con claves de otros tipos, solo el 2dspherecampo de índice determina si el índice hace referencia a un documento.

Las versiones anteriores de MongoDB solo admiten 2dsphere (Version 1) índices. 2dsphere (Version 1)los índices no son escasos de forma predeterminada y rechazarán documentos con nullcampos de ubicación.

Objetos GeoJSON adicionales

Version 2 y posteriores 2dsphereíndices incluye soporte para el objeto GeoJSON adicional: MultiPoint, MultiLineString, MultiPolygon, y GeometryCollection. Para obtener detalles sobre todos los objetos GeoJSON compatibles, consulte Objetos GeoJSON .

Consideraciones

geoNeary $geoNearrestricciones

A partir de MongoDB 4.0, puede especificar una keyopción en la $geoNearetapa de canalización para indicar la ruta del campo indexado que se utilizará. Esto permite que el $geoNearescenario se use en una colección que tiene múltiples 2dsphereíndices y / o múltiples índices 2d :

  • Si su colección tiene múltiples 2dsphereíndices y / o múltiples índices 2d , debe usar la keyopción para especificar la ruta del campo indexado a usar.
  • Si no especifica key, no puede tener un 2dsphereíndice múltiple y / o un índice 2d múltiple, ya que sin él key, la selección de índice entre varios 2díndices o 2dsphereíndices es ambigua.

NOTA

Si no especifica el key, y tiene como máximo solo un 2dsphereíndice de índice y / o solo un 2dsphereíndice de índice, MongoDB busca primero un 2díndice para usar. Si 2dno existe un índice, MongoDB busca un 2dsphereíndice para usar.

Restricciones de claves de fragmentos

No puede utilizar un 2dsphereíndice como clave de fragmentación al fragmentar una colección. Sin embargo, puede crear un índice geoespacial en una colección fragmentada utilizando un campo diferente como clave de fragmentación.

2dsphereRestricciones de campos indexados

Los campos con índices 2dsphere deben contener datos de geometría en forma de pares de coordenadas o datos GeoJSON . Si intenta insertar un documento con datos que no son de geometría en un 2dspherecampo indexado, o crea un 2dsphereíndice en una colección donde el campo indexado tiene datos que no son de geometría, la operación fallará.

Crear un 2dsphereíndice

Para crear un 2dsphereíndice, use el db.collection.createIndex()método y especifique el literal de cadena "2dsphere"como tipo de índice:

db.collection.createIndex( { <location field> : "2dsphere" } )

donde <location field>es un campo cuyo valor es un objeto GeoJSON o un par de coordenadas heredado .

A diferencia de un índice 2d compuesto que puede hacer referencia a un campo de ubicación y a otro campo, un índice compuesto 2dsphere puede hacer referencia a múltiples campos de ubicación y no ubicación.

Para los siguientes ejemplos, considere una colección placescon documentos que almacenan datos de ubicación como GeoJSON Point en un campo llamado loc:

db.places.insert(   {      loc : { type: "Point", coordinates: [ -73.97, 40.77 ] },      name: "Central Park",      category : "Parks"   })db.places.insert(   {      loc : { type: "Point", coordinates: [ -73.88, 40.78 ] },      name: "La Guardia Airport",      category : "Airport"   })

Crear un 2dsphereíndice

La siguiente operación crea un índice 2dsphere en el campo de ubicación loc:

db.places.createIndex( { loc : "2dsphere" } )

Crear un índice compuesto con 2dsphereclave de índice

Un índice compuesto puede incluir una 2dsphereclave de índice en combinación con claves de índice no geoespaciales. Por ejemplo, la siguiente operación crea un índice compuesto donde la primera clave loces una 2dsphereclave de índice y las claves restantes categoryy namesson claves de índice no geoespaciales, específicamente claves descendentes ( -1) y ascendentes ( 1) respectivamente.

db.places.createIndex( { loc : "2dsphere" , category : -1, name: 1 } )

A diferencia del índice 2d , un 2dsphereíndice compuesto no requiere que el campo de ubicación sea el primer campo indexado. Por ejemplo:

db.places.createIndex( { category : 1 , loc : "2dsphere" } )