sql >> Database >  >> NoSQL >> MongoDB

Mongoose-query voor documenten van de afgelopen 24 uur, slechts één document per uur

Aggregatie gebruiken

dit is een geweldig artikel voor hoe u uw documenten kunt groeperen en kies vervolgens één item per document.

U moet ook de documenten van de afgelopen 24 uur filteren, vervolgens projecteren voor zoeken en hour van tijdstempel.

Uw vraag ziet er ongeveer zo uit

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. tel het aantal sessies in connect-redis

  2. Update MongoDB-verzameling met $toLower

  3. Ingesloten document in array vervangen in MongoDB

  4. Mongoose TypeError:kan de operator 'in' niet gebruiken om te zoeken naar '_id' in [object Object]