3

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

有什么方法可以做到这一点,还是我需要为小时、分钟、秒创建单独的字段,并通过例如 find({"minute":0, "second":0}) 直接查询它们?

谢谢!

4

3 回答 3

6

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

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

像这样。

于 2013-03-26T14:03:20.103 回答
2

$expr运算符与日期聚合运算符一起使用,$minute$second在您的查找查询中作为:

db.collection.find({
    '$expr': {
        '$and': [
            { '$eq': [ { '$minute': '$dateField' }, 0 ] },
            { '$eq': [ { '$second': '$dateField' }, 0 ] },
        ]
    }
})
于 2018-08-10T15:20:13.903 回答
1

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

于 2013-03-26T13:51:37.150 回答