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

grupper efter dag/måned og tag gennemsnittet af rating på den dag/måned i mongo

For at gruppere dokumenter efter dag/måned og returnere månedsnøglen i dit output, skal du først $projekt nøglefelterne til passende formater ved hjælp af datoen operatører, især $ dateToString og $month operatører.

Dette kan gøres i en $projekt fase forud for $group trin, men ikke nødvendigt, da $gruppe pipeline rummer for det meste akkumulatoren operatører.

I den foregående $group pipeline, kan du gruppere dokumenterne efter den formaterede datonøgle, samle ved hjælp af $avg operatør og returner måneden som et heltal fra den forrige pipeline ved hjælp af $first akkumulatoroperatør.

Kørsel af følgende aggregeringspipeline skulle give dig det ønskede resultat:

db.collection.aggregate([
  { "$group": {
    "_id": { 
        "$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" } 
    },
    "average": { "$avg": "$rating" },
    "month": { "$first": { "$month": "$ceatedAt" } },
  } }
]) 


  1. Mongoose/node.js hvordan man finder, udfylder, laver ting, 'affolker' og opdaterer

  2. Opbygning af flere indekser på én gang

  3. MongoDB $in med underforespørgsel

  4. Sådan konfigureres Rebus til at have emner baseret på handlers type