es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para construir un índice en MongoDB para un objeto LineString que tiene un array llamado coordinates que contiene dos o más arrays de pares de coordenadas, puedes ejecutar el comando db.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.

Comments are closed.