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

202
Vistas
Mongodb: ¿Cómo pasar otra etapa dentro de $group?


Rendimiento esperado:

 [ { "_id": "healty", "doc_count": 2, "ingredients": { "Leaves": { "1.2g": 1, "1.5g": 1 }, "Spinach": { "12g": 1, "18g": 1 } } }, { "_id": "junk", "doc_count": 3, "ingredients": { "cheese": { "100g": 1, "120g": 2 }, "meat": { "50g": 1, "60g": 1, "70g": 1 } } } ]

Agregación a continuación: Playground 1

 db.collection.aggregate([ { $group: { "_id": "$type", // grouping the document by "type" field "ingredients": { $push: "$$ROOT" //want to run Playground2 aggrgtion in each of it }, "doc_count": { $sum: 1 // total count } } } ])


Después,

También descubrí un Otro paso para convertir la matriz de ingredientes después: Playground 2

Pero, esta agregación es para Todos los documentos. Quiero hacer que la agregación de Playground2 funcione para el campo de ingredientes solo en cada objeto de grupo .

Es similar a combinar Playground1 y Playground2 . ¿Cómo hago esto?

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

0

db.collection.aggregate([ { "$set": { "ingredients": { "$objectToArray": "$ingredients" } } }, { "$unwind": "$ingredients" }, { "$group": { "_id": { type: "$type", ingredient: "$ingredients" }, "count": { "$sum": 1 }, "doc_count": { "$addToSet": "$item" } } }, { "$group": { "_id": { type: "$_id.type", ingredient: "$_id.ingredient.k" }, "docs": { "$push": { k: "$_id.ingredient.v", v: "$count" } }, "doc_count": { "$push": "$doc_count" } } }, { "$group": { "_id": "$_id.type", "ingredients": { "$push": { k: "$_id.ingredient", v: { "$arrayToObject": "$docs" } } }, "doc_count": { "$push": { $reduce: { input: "$doc_count", initialValue: [], in: { $concatArrays: [ "$$value", "$$this" ] } } } } } }, { "$set": { "ingredients": { "$arrayToObject": "$ingredients" }, doc_count: { "$size": { "$setUnion": { $reduce: { input: "$doc_count", initialValue: [], in: { $concatArrays: [ "$$value", "$$this" ] } } } } } } } ])

parque infantil mongo

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