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.

Filtrar objeto de array y seleccionar campo.

Tengo una lista de objetos con pares de nombres y valores en ellos y no puedo descubrir cómo recuperar un valor de un arreglo donde el nombre es cierto valor.

Por ejemplo:

Ahora necesito encontrar el valor del elemento con

“name”: “NEEDCUSTOMSDOCUMENT”

así que en este caso

“value”: “True”

Puedo listar todos los valores con

Pero luego, ¿cómo recuperar el campo de valor del índice con ese nombre?

El índice podría ser diferente en cada documento, por lo que no puedo simplemente consultar “orderparameters.list.1.value”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el operador $filter para recuperar el campo de valor del índice con el nombre especificado. La sintaxis sería:

    db.orders.aggregate({ 
        $match: { ordernumber: '1234' } 
    }, { 
        $project: { 
            'orderparameters.list': { 
                $filter: { 
                    input: '$orderparameters.list', 
                    as: 'list', 
                    cond: { $eq: ['$$list.name', 'NEED_CUSTOMS_DOCUMENT'] } 
                } 
            } 
        } 
    }).pretty()
    

    Esto devolverá el campo de valor del índice con el nombre especificado.

Comments are closed.