MongoDB查询statusoperStartTime这个字段在3月18日到4月17日内每天1500到1730的数据
可以使用以下MongoDB查询语句来获取status.operStartTime字段在3月18日到4月17日内每天15:00到17:30的数据:
db.collection.find({
"status.operStartTime": {
$gte: ISODate("2021-03-18T15:00:00.000Z"),
$lte: ISODate("2021-04-17T17:30:00.000Z")
}
})
这个查询语句会找到在指定时间范围内的所有文档。如果要进一步筛选出每天15:00到17:30的数据,可以使用MongoDB聚合管道来进行处理。下面是一个示例聚合管道:
db.collection.aggregate([
{
$match: {
"status.operStartTime": {
$gte: ISODate("2021-03-18T15:00:00.000Z"),
$lte: ISODate("2021-04-17T17:30:00.000Z")
}
}
},
{
$addFields: {
"startHour": { $hour: "$status.operStartTime" },
"startMinute": { $minute: "$status.operStartTime" }
}
},
{
$match: {
$or: [
{ $and: [ { "startHour": 15 }, { "startMinute": { $gte: 0 } } ] },
{ $and: [ { "startHour": 16 }, { "startMinute": { $gte: 0 } } ] },
{ $and: [ { "startHour": 17 }, { "startMinute": { $lte: 30 } } ] }
]
}
}
])
这个聚合管道首先使用$match阶段来找到指定时间范围内的所有文档。然后使用$addFields阶段来计算每个文档的操作开始时间的小时和分钟数,并将它们存储到新的字段中。最后,在第二个$match阶段中使用$or操作符来选择每天15:00到17:30之间的文档
原文地址: https://www.cveoy.top/t/topic/cEvF 著作权归作者所有。请勿转载和采集!