Estou tentando copiar o registro mais recente para cada valor de número de certificado. Temos vários documentos para cada certificado e estamos tentando obter o registro mais recente para cada certificado e copiá-lo para uma nova coleção.
aqui estão os dados:
{ "_id": ..., "certnumber":"123456", "createtime": "2024-02-03T16:42:20.324Z", "company": "A" ,.....}
{ "_id": ..., "certnumber":"123456", "createtime": "2024-02-03T16:32:20.324Z", "company": "A" ,.....}
{ "_id": ..., "certnumber":"123456", "createtime": "2024-02-02T14:28:20.324Z", "company": "A" ,.....}
{ "_id": ..., "certnumber":"123456", "createtime": "2024-02-02T13:22:20.324Z", "company": "A" ,.....}
{ "_id": ..., "certnumber":"654321", "createtime": "2024-02-05T17:42:20.324Z", "company": "B" ,.....}
{ "_id": ..., "certnumber":"654321", "createtime": "2024-02-05T16:42:20.324Z", "company": "B" ,.....}
{ "_id": ..., "certnumber":"654321", "createtime": "2024-02-03T15:32:20.324Z", "company": "B" ,.....}
{ "_id": ..., "certnumber":"654321", "createtime": "2024-02-03T14:22:20.324Z", "company": "B" ,.....}
Tentei reunir os últimos registros usando o comando abaixo e funciona, mas ele retorna apenas 2 campos. Como faço para extrair o documento inteiro em vez de apenas 2 campos?
db.collectionname.aggregate(
[
{ $sort: { certnumber: 1, createtime: 1} },
{
$group:
{
_id: {certnumber : "$certnumber" },
updatedDate: { $last: "$createtime" }
}
},
],
)