sql >> Base de Datos >  >> NoSQL >> MongoDB

Resultados agregados de MongoDB por fecha de ObjectId

Actualización:hay una forma integrada de hacer esto ahora, consulte https://stackoverflow.com/a /51766657/295687

No hay forma de lograr lo que está pidiendo con el marco de agregación de mongodb, porque no hay un operador de agregación que pueda convertir ObjectId en algo parecido a una fecha (hay un JIRAticket , aunque). Sin embargo, debería poder lograr lo que desea usando map-reduce:

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