我想找出给定日期范围内某个时间段内存在的文档。
我只有一个存储为日期对象的字段“日期”。
例如-
查找时间在上午 10:00 到下午 23:30 之间的所有文档,日期范围为 2018 年 1 月 10 日到 2018 年 1 月 30 日
(另外我目前使用的是 3.4 版)
最佳答案
您可以添加临时字段,它将代表您日期的分钟部分,如 60* $hour + $minute ,因此例如上午 10 点为 600,然后应用您的过滤条件:
db.col.aggregate([
{
$addFields: {
minutes: {
$add: [ { $minute: "$date" }, { $multiply: [ { $hour: "$date" }, 60 ] }]
}
}
},
{
$match: {
$and: [
{ "date": { $gte: ISODate("2018-01-10T10:00:00.000Z") } },
{ "date" : { $lte: ISODate("2018-01-30T23:30:00.000Z") } },
{ "minutes": { $gte: 60*10 } },
{ "minutes": { $lte: 23*60+30 } }
]
}
},
{
$project: { minutes: 0 }
}
])
关于mongodb - 获取日期范围内给定时间范围内的 Mongodb 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626173/