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

Dotaz Mongoose na dokumenty za posledních 24 hodin, pouze jeden dokument za hodinu

Použijte agregaci

toto je skvělý článek pro seskupení dokumentů a poté vyberte jednu položku na dokument.

Musíte také filtrovat dokumenty za posledních 24 hodin a poté promítnout pro hledání a hour z časového razítka.

Váš dotaz bude vypadat nějak takto

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. Meteor:Unikátní MongoDB URL pro různé uživatele

  2. Nelze se připojit k Mongodb pod v Kubernetes (připojení odmítnuto)

  3. Loopback – ZÍSKEJTE model pomocí vlastního String ID z MongoDB

  4. Vyhněte se duplicitním záznamům v poli Mongoose