Преобразование типов данных в MongoDB

У меня есть коллекция под названием Document в MongoDB. Документы в этой коллекции имеют поле с именем CreationDate, которое хранится в формате даты ISO. Моя задача - подсчитать количество документов, созданных за день, и отсортировать по числу асинхронно. Выходной формат должен быть [{_id: 'yyyy-MM-dd', cnt: x}]. Я попытался использовать структуру агрегации, как показано ниже.

db.Document.aggregate( 
    , {$project: {_id:1, Year:{$year:'$CreationDate'}, Month:{$month:'$CreationDate'}, Date:{$dayOfMonth:'$CreationDate'}}}
    , {$group: {_id:{$concat:['$Year', '-', '$Month', '-', '$Date']}, cnt:{$sum:1}}}
    , {$sort:{'cnt':-1}}
);

Код дает мне ошибку, как показано ниже:

$concat only supports strings, not NumberInt32

Я понимаю, что это потому, что $ year, $ month и $ dayOfMonth все возвращают число. Можно составить поле _id как объект и переформатировать его в желаемом формате на уровне приложения.

Но с технической точки зрения у меня есть два вопроса:

Как преобразовать число в строку в оболочке MongoDB? В этом случае выходные данные $ year можно затем преобразовать в строку и использовать в $ concat.

Есть ли лучший способ отформатировать вывод ISODate в различные форматы даты? Во многих случаях нам нужна только определенная часть ISODate, например: компонент даты или часть времени. Есть ли какие-либо встроенные операторы MongoDb для этого?

Спасибо заранее за любые советы.

Ответы на вопрос(5)

Ваш ответ на вопрос