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 agregar en un objeto incrustado anidado en MongoDB.

{
  "_id": 1,
  "title": {
    "header1":{ "name":"A", "age":10, "active":true},
    "header2":{ "name":"B", "age":15, "active":false},
    "header3":{ "name":"C", "age":20, "active":true},
    "header4":{ "name":"D", "age":30, "active":true},
    "header5":{ "name":"E", "age":35, "active":false},
    "header6":{ "name":"F", "age":40, "active":true},
    "header7":{ "name":"G", "age":45, "active":false}
  }
}

¿Cómo puedo mostrar solo los encabezados cuyo valor activo es falso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar solo aquellos encabezados cuyo valor activo es falso, puedes utilizar el marco de agregación de MongoDB y el operador $objectToArray para convertir el campo title en un array de pares clave-valor. Luego, puedes utilizar el operador $filter para filtrar el array en función del valor del campo active. Aquí tienes un ejemplo:

    db.collection.aggregate([
      {
        $project: {
          _id: 0,
          falseHeaders: {
            $filter: {
              input: { $objectToArray: "$title" },
              as: "el",
              cond: { $eq: [ "$$el.v.active", false ] }
            }
          }
        }
      }
    ])
    

    Esto devolverá el siguiente resultado:

    {
      "falseHeaders": [
        { "k": "header2", "v": { "name": "B", "age": 15, "active": false } },
        { "k": "header5", "v": { "name": "E", "age": 35, "active": false } },
        { "k": "header7", "v": { "name": "G", "age": 45, "active": false } }
      ]
    }
    

    En este resultado, puedes ver el campo falseHeaders, que contiene un array de los encabezados cuyo valor active es falso. Cada encabezado está representado como un objeto con un campo k para la clave del encabezado y un campo v para el valor del encabezado.

Comments are closed.