我每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”
....然后继续