【发布时间】:2021-05-30 06:17:08
【问题描述】:
如何使用聚合对dueDate 进行排序?
todos: [
{
task: {
type: String,
trim: true,
required: 'Please Enter your Task',
},
dueDate: Date,
dueTime: String,
},
],
我尝试了这些方法,但没有成功。
db.server.aggregate(
{ $unwind: '$todos' },
{ $sort: { 'todos.dueDate': -1 } },
{ $group: { _id: '$_id', todos: { $push: '$todos' } } },
{ $project: { 'todos.dueDate': '$dueDate' } }
);
和
db.server.aggregate(
{ $unwind: '$todos' },
{ $sort: { 'todos.dueDate': -1 } },
{ $group: { "_id": "$_id", todos: { $push: '$todos' } } },
);
我无法理解我在聚合中做错了什么。
示例:-
示例输入
{
_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'
}
样本输出
{
_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'
}
【问题讨论】:
-
所以你真的不想按日期分组?
-
不,我只是希望它返回排序后的
dueDate -
日期以这种格式存储
Tue Mar 09 2021 00:00:00 GMT+0530 (India Standard Time)
标签: javascript node.js database mongodb mongoose