sql >> Database >  >> NoSQL >> MongoDB

groepeer per dag/maand en neem het gemiddelde van de beoordeling op die dag/maand in mongo

Als u documenten per dag/maand wilt groeperen en de maandsleutel in uw uitvoer wilt retourneren, moet u eerst $project de sleutelvelden naar de juiste indelingen met behulp van de Datum operators, in het bijzonder de $dateToString en $month exploitanten.

Dit kan in een $project fase voorafgaand aan de $group stap maar niet nodig sinds de $group pijplijn herbergt voornamelijk de accumulator operators.

In de voorgaande $group pijplijn, kunt u de documenten groeperen op de geformatteerde datumsleutel, aggregeren met behulp van de $avg operator en retourneer de maand als een geheel getal uit de vorige pijplijn met behulp van $first accumulator operator.

Het uitvoeren van de volgende aggregatiepijplijn zou u het gewenste resultaat moeten geven:

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


  1. Mangoest &uniek veld

  2. Hoe kan ik een unieke id met twee kolommen toevoegen aan de mongodb in een meteor-app?

  3. TypeFout bij statische methode van mangoestmodel

  4. Mongo:verzamel $geoNear en $text geen resultaten