Aktualizacja:Istnieje wbudowany sposób, aby to zrobić teraz, zobacz https://stackoverflow.com/a /51766657/295687
Nie ma sposobu na osiągnięcie tego, o co prosisz, za pomocą frameworka mongodb'saggregation, ponieważ nie ma operatora agregacji, który mógłby zmienić ObjectId w coś podobnego do daty (istnieje JIRAticket , chociaż). Powinieneś jednak być w stanie osiągnąć to, co chcesz, używając redukcji mapy:
// 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};
}