如何使用Aggregate在MongoDB中获取大于24小时的数据?

时间:2019-03-25 07:18:11

标签: node.js mongodb mongoose

我使用MongoDB和mongoosejs,并且尝试使用日期获取数据

我有一个集合的汇总语句,可以接收当前时间少于24小时的所有数据。

,例如,如果 2019年3月30日T12:00 ,则只能获取所有已创建的数据,且大于 2019年3月29日T12:00

我尝试使用此代码,但我没有得到我需要的代码:

var dateLess24Hours = new Date(new Date().getTime()-24*60*60*1000).toISOString();
Collection.aggregate([
        {$match: { user_id: ObjectId(req.params.user_id)}},
        {$lookup:
            {
                from: 'items',
                let: { user_id: '$user_id'},
                pipeline: [
                    {$match: 
                        {$expr: 
                            {$and: 
                                [ 
                                    {$gt: ['$created', dateLess24Hours]},
                                    {$eq: ['$user_id', '$$user_id']}
                                ]
                            }
                        },
                    },
                ],
                as: 'items'
            }
        },
        {$unwind: {path: '$items', preserveNullAndEmptyArrays: true}}
], function (error, data) {
        if (error) { rej(error) }
       res.send({ success: true, data: data })
   })

当我尝试这样做时:

Items.find({created: {$gt: dateLess24Hours}}, 'user_id text created', function(error, data){
        res.send({data: data})
})

集合返回我需要的数据,但是当我使用 聚合 时,它不返回任何数据

* req.params.user_id =“ 5c980bec2aa629868965ff4c”或任何mongo ID

请让我知道您的答案,谢谢您的帮助。

0 个答案:

没有答案