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

Resultados agregados do MongoDB por data do ObjectId


Atualização:existe uma maneira integrada de fazer isso agora, consulte https://stackoverflow.com/a /51766657/295687

Não há como realizar o que você está pedindo com a estrutura de agregação do mongodb, porque não há um operador de agregação que possa transformar os ObjectIds em algo semelhante a uma data (há um JIRAticket , no entanto). Você deve ser capaz de realizar o que deseja usando map-reduce, no entanto:
// map function
function domap() {
    // turn ObjectId --> ISODate
    var date = this._id.getTimestamp();
    // format the date however you want
    var year = date.getFullYear();
    var month = date.getMonth();
    var day = date.getDate();

    // yields date string as key, entire document as value
    emit(year+"-"+month+"-"+day, this);
}

// reduce function
function doreduce(datestring, docs) {
    return {"date":datestring, "docs":docs};
}