Агрегация в MongoDB
Блоки коллекций
{
"_id": ObjectId("512eef329d5d0c9415000025"),
"tx": {
"0": "A1",
"1": "A2",
"2": "A3"
},
"time": NumberInt(1304200205)
}
{
"_id": ObjectId("512eef329d5d0c9415000026"),
"tx": {
"0": "A4",
"1": "A5",
"2": "A6"
},
"time": NumberInt(1304200395)
}
{
"_id": ObjectId("512eef329d5d0c9415000027"),
"tx": {
"0": "A7",
"1": "A8",
"2": "A9"
},
"time": NumberInt(1304202305)
}
db.blocks.aggregate(
{'$unwind':'$tx'},
{'$group' : { '_id' : {
'year': {'$year':'$time'},
'month': {'$year':'$time'},
},
'count' : {'$sum':1}
}
});
{
"errmsg" : "exception: can't convert from BSON type NumberInt32 to Date",
"code" : 16006,
"ok" : 0
}
Это означает, что поле времени имеет формат даты не Mongo, а NumberInt32.
Как преобразовать его в MongoDate, используя агрегатную функцию. Я не хочу менять данные, потому что они поступают из другого источника, который я импортирую каждый час. В настоящее время в БД содержится около 2 000 000 записей, и их количество увеличивается...
Вопрос был поднят Aggregation Framework - Преобразование временной метки Unix в ISODate около 1 месяц назад. Если у кого-то есть ответ, пожалуйста, напишите его здесь тоже ...