【发布时间】:2014-03-28 17:14:18
【问题描述】:
我正在尝试按日期字段(即日期时间)搜索集合和分组记录。 我知道 pymongo 在后台将它们转换为正确的类型(ISODate 或类似的东西)。
问题是,由于 datetime 对象具有日期、时间、时区.. 我如何告诉组操作员只使用日期部分?因为否则我无法获得所需的分组,因为时间会阻止将同一天、同一月、同一年的记录组合在一起。
db.test.aggregate([
{"$group": {
"_id": "$date",
"count": {"$sum": 1}
}},
{"$limit": 10}])
结果:
{u'ok': 1.0,
u'result': [
{u'_id': datetime.datetime(2014, 2, 15, 18, 49, 9, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1},
{u'_id': datetime.datetime(2014, 2, 15, 18, 36, 38, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1},
{u'_id': datetime.datetime(2014, 2, 15, 18, 23, 56, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1}]}
控制用于分组的日期时间信息会很好,
- 仅按日期分组
- 按日期和小时分组
- 按日期、小时和分钟分组
- 等
是否有类似的东西:(或某种方式告诉只使用日期)
db.test.aggregate([
{"$group": {
"_id": "$date.date()",
"count": {"$sum": 1}
}},
{"$sort": "_id"}
])
或者也许有另一种方法来处理这个问题,有什么想法吗? 谢谢。
【问题讨论】:
标签: python mongodb mongodb-query aggregation-framework pymongo