Агрегация MongoDB конвертирует NumberInt32 в ISODate

Агрегация в 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 месяц назад. Если у кого-то есть ответ, пожалуйста, напишите его здесь тоже ...


person Nilam Doctor    schedule 28.02.2013    source источник
comment
Тот же ответ, кастовать пока нельзя   -  person Sammaye    schedule 28.02.2013