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

139
Vistas
Cómo ordenar matrices de objetos usando agregación en mongoDB

¿Cómo puedo ordenar la fecha de dueDate usando el agregado?

 todos: [ { task: { type: String, trim: true, required: 'Please Enter your Task', }, dueDate: Date, dueTime: String, }, ],

Intenté estas cosas pero no funcionó.

 db.server.aggregate( { $unwind: '$todos' }, { $sort: { 'todos.dueDate': -1 } }, { $group: { _id: '$_id', todos: { $push: '$todos' } } }, { $project: { 'todos.dueDate': '$dueDate' } } );

Y

 db.server.aggregate( { $unwind: '$todos' }, { $sort: { 'todos.dueDate': -1 } }, { $group: { "_id": "$_id", todos: { $push: '$todos' } } }, );

No soy capaz de entender lo que estoy haciendo mal en la agregación.

Ejemplo:-

Entrada de muestra

 { _id: 603ba275cc571e2404e0dd1b, task: 'task 1', dueDate: 2021-02-27T18:30:00.000Z, dueTime: '' },{ _id: 603ba285cc571e2404e0dd1c, task: 'task 2', dueDate: 2021-03-30T18:30:00.000Z, dueTime: '07:32 PM' },{ _id: 603ba290cc571e2404e0dd1d, task: 'task 3', dueDate: 2021-03-08T18:30:00.000Z, dueTime: '07:32 PM' },{ _id: 603ba3a7fea412537c295056, task: 'task4', dueDate: 2021-03-01T18:30:00.000Z, dueTime: '07:37 PM' }

Salida de muestra

 { _id: 603ba275cc571e2404e0dd1b, task: 'task 1', dueDate: 2021-02-27T18:30:00.000Z, dueTime: '' },{ _id: 603ba3a7fea412537c295056, task: 'task4', dueDate: 2021-03-01T18:30:00.000Z, dueTime: '07:37 PM' },{ _id: 603ba290cc571e2404e0dd1d, task: 'task 3', dueDate: 2021-03-08T18:30:00.000Z, dueTime: '07:32 PM' },{ _id: 603ba285cc571e2404e0dd1c, task: 'task 2', dueDate: 2021-03-30T18:30:00.000Z, dueTime: '07:32 PM' }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si su objetivo es group los elementos de las tareas en grupos separados por fecha de dueDate y luego ordenar esos grupos, esto es lo que puede hacer:

 db.collection.aggregate([ { "$unwind": "$todos" }, { $group: { _id: "$todos.dueDate", todos: { $push: "$$ROOT" } } }, { $sort: { "_id": -1 } }, ])

Aquí hay un ejemplo de trabajo en mongoplayground: https://mongoplayground.net/p/n3cfrLvR2WM


Después de que OP editó la pregunta y aclaró cuál es el resultado esperado, esto se puede simplificar a:

 db.collection.aggregate([ { "$unwind": "$todos" }, { $sort: { "todos.dueDate": 1 } } ])

Zona de juegos Mongo: https://mongoplayground.net/p/YVCAiXrJJPv

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