mongodb查询中的日期/分钟

时间:2013-03-26 13:35:14

标签: mongodb datetime time-series isodate

我将时间序列数据存储在mongodb数据库中,其中一个字段是ISODate对象。我正在尝试检索ISODate对象的分钟和秒值为零的所有项目。也就是说,所有在圆形小时都有时间戳的对象。

有没有办法做到这一点,或者我是否需要直接创建小时,分钟,秒和查询的单独字段,例如find({“minute”:0,“second”:0 })?

谢谢!

3 个答案:

答案 0 :(得分:5)

你可以像@Devesh所说的那样做,或者如果它更合适你可以使用聚合框架:

db.col.aggregate([
   {$project: {_id:1, date: {mins: {$minute: '$dateField'}, secs: {$second: '$dateField'}}}},
   {$match: {mins: 0, secs: 0}}
]);

喜欢这样。

答案 1 :(得分:1)

您是否可以在集合中添加另一列,仅包含没有分钟和秒的日期时间。它将使您的查询更快速,更易于使用。它将是datetime列,没有分钟和秒部分

答案 2 :(得分:0)

使用 $expr 运算符以及日期汇总运算符 $minute $second 您的查找查询为:

db.collection.find({
    '$expr': {
        '$and': [
            { '$eq': [ { '$minute': '$dateField' }, 0 ] },
            { '$eq': [ { '$second': '$dateField' }, 0 ] },
        ]
    }
})