группа pymongo по дате и времени
Я пытаюсь искать в коллекции и группировать записи по полю даты, которая является датой и временем. Я знаю, что 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"}
])
Или, может быть, есть другой способ решения этой проблемы? Благодарю.