MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agreguj wyniki MongoDB według daty ObjectId

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. JSONObject to Document

  2. MongoDB:Kompromisy polegające na porzucaniu kolekcji a usuwaniu wszystkich jej dokumentów

  3. MongoDB - stronicowanie

  4. Jak wykluczyć jedno konkretne pole z kolekcji w Mongoose?

  5. MongoDB $przełącznik