How can I sort dueDate using aggregate?
todos: [
{
task: {
type: String,
trim: true,
required: 'Please Enter your Task',
},
dueDate: Date,
dueTime: String,
},
],
I tried these things but it didn't work.
db.server.aggregate(
{ $unwind: '$todos' },
{ $sort: { 'todos.dueDate': -1 } },
{ $group: { _id: '$_id', todos: { $push: '$todos' } } },
{ $project: { 'todos.dueDate': '$dueDate' } }
);
And
db.server.aggregate(
{ $unwind: '$todos' },
{ $sort: { 'todos.dueDate': -1 } },
{ $group: { "_id": "$_id", todos: { $push: '$todos' } } },
);
I am not able to understand what I am doing wrong in the aggregation.
Example:-
Sample Input
{
_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'
}
Sample Output
{
_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'
}
dueDateTue Mar 09 2021 00:00:00 GMT+0530 (India Standard Time)