mongodb - 获取日期范围内给定时间范围内的 Mongodb 文档

标签 mongodb

我想找出给定日期范围内某个时间段内存在的文档。

我只有一个存储为日期对象的字段“日期”。

例如-

查找时间在上午 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/

相关文章:

MongoDB:$divide 和 $multiply 出错

node.js - 用于 SaaS 的 MongoDB 中的多个数据库

mongodb - ReactJS - 如何从 MongoDB Date.now 更改日期格式

javascript - cursor.toArray() 返回一个 promise 而不是数组

c# - 动态 Linq 谓词在 C# MongoDB 驱动程序中引发 "Unsupported Filter"错误

mongodb - meteor 中的 Mongo 3.4

Mongodb:获取所有列的不同记录,并同时针对另一列连接值

java - Mongo 数据库,选择 * WHERE id = 3 AND id = 4

node.js - 如何获得 Mongoose 模型的所有计数?

python - 如何使用 pymongo 中对象列表中的值创建新的字段名称?