mongodb在给定时间之间查找,与日期无关

时间:2018-09-04 16:08:28

标签: mongodb

以下查询将为在1-AUG-2018 6AM 1-AUG-2018 8AM 之间登录的所有用户提供权限。是否可以找到在 6AM 8AM 之间登录的用户,而不考虑日期。换句话说,所有登录到除日期之外的任何日期的用户都应在6AM-8AM之间。

db.user.find({
   "log-time" : {"$gte": ISODate("2018-08-1T00:06:00.000Z"), "$lt": ISODate("2018-08-05T08:00:00.000Z")}
})
 

1 个答案:

答案 0 :(得分:1)

您可以使用$let定义临时变量,该临时变量将包含使用$hourhour中提取的ISODate,然后可以在$match中应用条件$expr

db.user.aggregate([
    {
        $match: {
            $expr: {
                $let: {
                    vars: { hour: { $hour: "$log-time" } },
                    in: {
                        $and: [
                            { $gte: [ "$$hour", 6 ] },
                            { $lt: [ "$$hour", 8 ] }
                        ]
                    }
                }
            }
        }
    }
])