查找最接近特定时间的记录

时间:2019-11-06 19:49:48

标签: mongodb mongodb-query

我每10分钟接收一次数据,我试图根据createdAt字段在某些特定时间查找最近的记录(仅一个小时,大于或等于最小小时)。

类似的东西:

  

'hour':{'$ in':[0,3,6,6,9,12,15,18,21]}

我有一个2个小时之间的示例,但我需要在X天前进行咨询。

使用mongodb v4即时通讯

这有效,但仅在两个特定的小时之间,找到最近的24小时记录,在6到9之间,排序和限制

db.getCollection("datastores").aggregate([
    {
        $match: {
            'createdAt': { '$gt': new Date(Date.now() - 24 * 60 * 60 * 1000) },
            'empresa': 1,
            'centro': 1
        }
    },
    {
        "$redact": {
            "$cond": [
                {
                    "$and": [
                        { "$gte": [{ "$hour": "$createdAt" }, 6] },
                        { "$lt": [{ "$hour": "$createdAt" }, 9] }
                    ]
                },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    },
    {
        $sort: {'createdAt':1}
    },
    {
        $limit: 1
    }
])

过去24小时内,基于[0、3、6、9、12、15、18、21]数组,我希望类似

  

_id:5dc31621338189986d2ec9a0,创建于:“ 2019-11-06T00:00”

     

_id:5dc31621338189986d2ec9a1,创建于:“ 2019-11-06T03:02”

     

_id:5dc31621338189986d2ec9a1,创建于:“ 2019-11-06T06:01”

     

_id:5dc31621338189986d2ec9a1,创建于:“ 2019-11-06T09:05”

     

_id:5dc31621338189986d2ec9a1,创建于:“ 2019-11-06T12:01”

     

_id:5dc31621338189986d2ec9a1,创建于:“ 2019-11-06T15:04”

     

....然后继续

0 个答案:

没有答案