MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como agrupar por documentos por semana no mongodb


Você pode conseguir isso usando a operação de agregação. Há $semana operação de agregação no mongodb.

Primeiro determine o startDate usando qualquer linguagem de programação que você usa.

Na operação de pipeline seguinte, contando o número de documentos correspondentes a uma semana. Você pode fazer isso em qualquer campo/tipo de agregação que precisar.
pipeline = [
    {
        $match: {
            timeStamp: {$gt: ISODate(startDate)},
        }
    },
    {
        $group: {
            _id: {$week: '$timeStamp'},
            documentCount: {$sum: 1}
        }
    }
];
db.mycollection.aggregate(pipeline)

Para os dois documentos acima especificados, o resultado será
{ "_id" : 48, "documentCount" : 2 }

O _id acima diz, 48ª semana, e há dois documentos.

Acesse o link $week para saber como o mongodb conta os números da semana.