Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!