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

637
Vistas
Cómo agrupar y contar campos en una colección mongoDB

Soy realmente nuevo en mongodb, vengo de un entorno sql y tengo dificultades para descubrir cómo ejecutar un informe simple que agrupará un valor de un documento anidado con un conteo y en un orden de clasificación con el conteo más alto primero.

Lo he intentado de muchas maneras a partir de lo que he encontrado en línea, pero no puedo apuntar al campo exacto que necesito para la agrupación.

Aquí está la colección.

 { "_id": { "$oid": "6005f95dbad14c0308f9af7e" }, "title": "test", "fields": { "6001bd300b363863606a815e": { "field": { "_id": { "$oid": "6001bd300b363863606a815e" }, "title": "Title Two", "datatype": "string" }, "section": "Section 1", }, "6001bd300b363863423a815e": { "field": { "_id": { "$oid": "6001bd3032453453606a815e" }, "title": "Title One", "datatype": "string" }, "section": "Section 1", }, "6001bd30453534863423a815e": { "field": { "_id": { "$oid": "6001bd300dfgdfgdf06a815e" }, "title": "Title One", "datatype": "string" }, "section": "Section 1", } }, "sections": ["Section 1"] }

El resultado que necesito obtener del ejemplo anterior sería:

"Título Uno", 2

"Título Segundo", 1

Puede alguien señalarme hacia la dirección correcta? Muchas gracias.

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

0

Tener nombres de campo dinámicos suele ser un diseño deficiente.

Prueba este:

 db.collection.aggregate([ { $set: { fields: { $objectToArray: "$fields" } } }, { $unwind: "$fields" }, { $group: { _id: "$fields.v.field.title", count: { $count: {} } } }, { $sort: { count: -1 } } ])
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay otra forma de hacerlo. El $project descarta todo excepto la inmersión profunda en "title" . Luego solo $unwind y $sortByCount .

 db.collection.aggregate([ { "$project": { "titles": { "$map": { "input": { "$objectToArray": "$fields" }, "in": "$$this.v.field.title" } } } }, { "$unwind": "$titles" }, { "$sortByCount": "$titles" } ])

Pruébalo en mongoplayground.net .

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