MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aggregierte MongoDB-Ergebnisse nach ObjectId-Datum

Update:Es gibt jetzt eine eingebaute Möglichkeit, dies zu tun, siehe https://stackoverflow.com/a /51766657/295687

Es gibt keine Möglichkeit, das zu erreichen, was Sie mit dem Aggregations-Framework von Mongodb verlangen, da es keinen Aggregationsoperator gibt, der ObjectIds in etwas Datumsähnliches umwandeln kann (es gibt einen JIRAticket , obwohl). Sie sollten jedoch in der Lage sein, mit map-reduce das zu erreichen, was Sie wollen:

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