sql >> Databáze >  >> NoSQL >> MongoDB

Agregovat výsledky MongoDB podle data ObjectId

Aktualizace:Existuje vestavěný způsob, jak to udělat nyní, viz https://stackoverflow.com/a /51766657/295687

S agregačním rámcem mongodb's není žádný způsob, jak dosáhnout toho, co požadujete, protože neexistuje žádný agregační operátor, který by dokázal přeměnit ObjectId na něco jako datum (existuje JIRAticket , ačkoli). Měli byste však být schopni dosáhnout toho, co chcete, pomocí 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};
}


  1. Má funkce javascriptu na straně serveru problémy s výkonem v mongoDB?

  2. $nin s $expr

  3. MongoDB $ cos

  4. jak uložit výsledek z dotazu mongodb do proměnné javascriptu?