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

Mongoose-forespørgsel efter dokumenter fra sidste 24 timer, kun ét dokument i timen

Brug aggregering

dette er en fantastisk artikel for at gruppere dine dokumenter, vælg derefter ét element pr. dokument.

Du skal også filtrere dokumenter for de sidste 24 timer og derefter projektere for find og hour fra tidsstempel.

Din forespørgsel vil noget som dette

collection.aggregate([
  {
    "$filter": {
      "createdAt": { $gt: new Date(Date.now() - 24*60*60 * 1000) }
    }
  },
  {
    "$project": {
      "h": {"$hour" : "$createdAt"},
      "original_doc": "$$ROOT"
    }
  },
  {
    "$group": {
      "_id": { "hour": "$h" },
      "docs": { $push: "$original_doc" } 
    }
  },
  { 
    $replaceRoot: {
      newRoot: { $arrayElemAt: ["$docs", 0] }
    }
  }
])


  1. Laravel - Caching veltalende med hyppige opdateringer

  2. Hvordan får man data fra MongoDB til simpelt array ved hjælp af Node.JS og Mongoose?

  3. Meteor MongoDB finde / hente problemer

  4. mongodb $eksisterer altid og returnerer 0