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.