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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para imprimir agrupado por fecha y por “productId” dentro de la fecha, podemos usar el Framework de Agregación de MongoDB con las etapas $group y $project. Aquí está la consulta:

    db.sales.aggregate([
      {
        $group: {
          _id: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
          products: { $push: "$productId" }
        }
      },
      {
        $project: {
          _id: 1,
          product1: { $size: { $filter: { input: "$products", as: "p", cond: { $eq: ["$$p", "product1"] } } } },
          product2: { $size: { $filter: { input: "$products", as: "p", cond: { $eq: ["$$p", "product2"] } } } }
        }
      }
    ])
    

    Explicación:

    1. La primera etapa $group agrupa los documentos por la fecha formateada (usando $dateToString), y crea una matriz de valores productId para cada grupo usando $push.
    2. La segunda etapa $project transforma la salida proyectando el campo de fecha agrupado (_id) y dos nuevos campos (product1 y product2) que cuentan el número de ocurrencias de cada productId dentro de la matriz de valores productId para cada grupo. Esto se hace usando los operadores $filter y $size en combinación.

    La salida para los datos proporcionados sería:

    [
      {
        "_id": "2018-03-04",
        "product1": 2,
        "product2": 2
      }
    ]
    

Comments are closed.