sql >> Database teknologi >  >> NoSQL >> MongoDB

Find dagens sidste dokument for de sidste 7 dage

Kristina Chodorow giver en detaljeret opskrift på denne præcise opgave i hendes bog MongoDB:The Definitive Guide :

Jeg er ikke bekendt med Mongoose, men jeg har forsøgt at tilpasse hendes eksempel til dit tilfælde nedenfor. Bemærk, at jeg ændrede createdAt default egenskab fra en værdi til en funktion og tilføjet et ekstra felt datestamp til dit skema:

var oneday = 24 * 60 * 60;

var schema = new Schema({
  aid: { type: Number }
, name: { type: String }
, score: { type: Number }

  // default: is a function and called every time; not a one-time value!
, createdAt: { type: Date, default: Date.now }

  // For grouping by day; documents created on same day should have same value
, datestamp: { type: Number
             , default: function () { return Math.floor(Date.now() / oneday); }
             }
});


schema.statics.getLastWeek = function(name, fn) {
    var oneweekago = Date.now() - (7 * oneday);

    ret = this.collection.group({
          // Group by this key. One document per unique datestamp is returned.
          key: "datestamp"
          // Seed document for each group in result array.
        , initial: { "createdAt": 0 }
          // Update seed document if more recent document found.
        , reduce: function(doc, prev) {
              if (doc.createdAt > prev.createdAt) {
                prev.createdAt = doc.createdAt;
                prev.score = doc.score;

                // Add other fields, if desired:
                prev.name = doc.name;
              }
          // Process only documents created within past seven days
        , condition: { "createdAt" : {"$gt": oneweekago} }
        }});

   return ret.retval;

   // Note ret, the result of group() has other useful fields like:
   // total "count" of documents,
   // number of unique "keys",
   // and "ok" is false if a problem occurred during group()

);


  1. Online Apache HBase Backups med CopyTable

  2. Hvordan finder man et underfelt i Mongo uden at kende det overordnede felt?

  3. Hvor man kan skrive og gemme mongoDB-kort-/reduceringsfunktioner i java-projektet

  4. MongoDB-konfiguration i CakePHP 3.x