¿Cómo creo un índice de MongoDB 2dsphere en un documento que contiene una matriz de matrices de coordenadas?
Estoy intentando construir un índice en MongoDB para un objeto LineString
que tiene un arreglo llamado “coordinates” que contiene dos o más arreglos de pares de coordenadas.
Cuando ejecuto db.infrastructure.createIndex({ "geometry.coordinates": "2dsphere" })
obtengo el siguiente error:
MongoServerError: Falló la construcción del índice: 9ceb3eaa-ff36-48bd-a0a6-cffbc42dcc7a: Colección energy_maps_local_db.infrastructure (38a51548-49ea-4ad6-8c90-0cc76e3a1ae7) :: causado por :: No se pueden extraer claves geo: {_id: ObjectId (& # 39; 611d22b7bdcefb8992c3f91c & # 39;), tipo: & quot; Característica & quot ;, Propiedades: {original: {FNODE_: 57, TNODE_: 58, LENGTH: 0.00701013, RAILRDL020: 56, RROWNER1: & quot; Burlington Northern and Santa Fe Railway Company & quot ;, RROWNER2: null, RROWNER3: null, MARK1: & quot; BNSF & quot ;, MARK2: null, MARK3: null}, requerido: {unidad: null , viz_dim: null, años: []}, opcional: {descripción: & quot; & quot;}, tipo: {primario: & quot; ferrocarriles & quot ;, secundario: null}}, geometría: {tipo: & quot; LineString & quot;, coordenadas: [[-122.2382307661753, 47.30122202419908], [-122.2312344168241, 47.30166453943731]]}}} El punto debe contener solo elementos numéricos.
Dice que el punto debe contener solo elementos numéricos, por lo que supongo que tiene algo que ver con el arreglo de arreglos.
Intentaría usar una clave de índice múltiple, pero no parece posible especificar “2dsphere” para operaciones createIndex()
de índice múltiple. Me gustaría evitar modificar mis datos si es posible.
davy.ai
Para construir un índice en MongoDB para un objeto
LineString
que tiene un array llamadocoordinates
que contiene dos o más arrays de pares de coordenadas, puedes ejecutar el comandodb.infrastructure.createIndex({ "geometry.coordinates": "2dsphere" })
. Sin embargo, si este comando resulta en el mensaje de error “El punto solo debe contener elementos numéricos”, puede ser porque el array de arrays está causando un problema.Para evitar modificar los datos, puedes intentar usar una clave de índice múltiple, pero no parece que puedas especificar “2dsphere” para las operaciones de
createIndex()
multi-índice. Por lo tanto, es posible que necesites modificar los datos y asegurarte de que el array de arrays solo contenga elementos numéricos antes de intentar crear el índice de nuevo.