Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

166
Vistas
encuentre el índice de un elemento particular en una matriz multidimensional en MongoDB

Tengo un documento en MongoDB que tiene una matriz multidimensional como se muestra a continuación.

 {"_id":1, "name":"Johnson", "card":[ ["",12,25,"","",52,60,"",86], [1,17,29,"",43,"","","",89], [3,"","",34,45,"",62,70,""] ] }

Estoy buscando una consulta que devuelva el índice de un elemento particular en la matriz, por ejemplo, digamos 29 cuyo índice es [1][2] pero cuando consulté como:

 > db.test.aggregate([{$project:{index:{$indexOfArray:["$card",29]}}}])

obtuve el resultado como:

 { "_id" : 1, "index" : -1 }

lo cual no es cierto Descubrí que este método de consulta solo funciona para una matriz unidimensional y no puedo averiguar cómo encontrar el índice de una matriz multidimensional en MongoDB. Cualquier ayuda será apreciada. Gracias

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No está exactamente claro qué tipo de datos es [1][2], por lo que generar el resultado deseado es un desafío. Aquí hay un intento de ayudar a su pregunta ...

Datos de prueba

 db.collection.insert( { "name":"Johnson", "card":[ ["", 12, 25, "", "", 52, 60, "", 86], [1, 17, 29, "", 43, "", "", "", 89], [3, "", "", 34, 45, "", 62, 70, ""] ] }

(Asume un valor codificado de forma rígida de 29 para buscar)

Agregar

EDITAR 2021-12-09 - AÑADIDO $proyecto PARA CAST RESULTS COMO INTEGER. ERA NúmeroLargo()

 db.collection.aggregate([ { $unwind: { path: "$card", includeArrayIndex: "outerIndex" } }, { $unwind: { path: "$card", includeArrayIndex: "innerIndex" } }, { $match: { "card": 29 } }, { $project: { name: 1, card: 1, outerIndex: { $convert: { input: "$outerIndex", to: "int" } }, innerIndex: { $convert: { input: "$innerIndex", to: "int" } } } } ])

Resultados

 [ { _id: ObjectId("61b13476c6c466d7d1ea9b5e"), name: 'Johnson', card: 29, outerIndex: 1, innerIndex: 2 } ]

Los campos no deseados se pueden suprimir con otra etapa de $project , pero no la incluí aquí porque no tenía claro el resultado deseado.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda