Conversión de tipo de datos en MongoDB

Tengo una colección llamada Documento en MongoDB. Los documentos en esta colección tienen un campo llamado CreationDate almacenado en el tipo de fecha ISO. Mi tarea es contar el número de documentos creados por día y ordenarlos de forma asíncrona. El formato de salida debe ser [{_id: 'aaaa-MM-dd', cnt: x}]. Traté de usar el marco de agregación como se muestra a continuación.

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}}
);

El código me da el error de la siguiente manera:

$concat only supports strings, not NumberInt32

Entiendo que esto se debe a que $ year, $ month y $ dayOfMonth todos devuelven el número. Es posible componer el campo _id como un objeto y volver a formatearlo en el formato deseado en el nivel de aplicación.

Pero desde una perspectiva técnica, tengo dos preguntas:

¿Cómo convertir un número a una cadena en el shell MongoDB? En este caso, la salida de $ year se puede convertir a cadena y usar en $ concat.

¿Hay una mejor manera de formatear la salida ISODate a varios formatos de fecha? En muchos casos, solo necesitamos cierta parte de un ISODate, por ejemplo: el componente de fecha o la parte de tiempo. ¿Hay algún operador incorporado MongoDb para lograr esto?

Gracias de antemano por cualquier consejo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta