MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gruppieren Sie nach Tag/Monat/Woche basierend auf dem Datumsbereich

Führen Sie für die wöchentliche Gruppierung die folgende Pipeline aus, die hauptsächlich verwendet Datumsaggregationsoperatoren um die Datumsteile zu extrahieren:

db.collection.aggregate([
    { 
        "$project": {
            "createdAtWeek": { "$week": "$createdAt" },
            "createdAtMonth": { "$month": "$createdAt" },
            "rating": 1
        }
    },
    {
         "$group": {
             "_id": "$createdAtWeek",
             "average": { "$avg": "$rating" },
             "month": { "$first": "$createdAtMonth" }
         }
    }
])

und tauschen Sie für monatliche Aggregate den $gruppe Schlüssel, um das erstellte Monatsfeld zu verwenden:

db.collection.aggregate([
    { 
        "$project": {
            "createdAtWeek": { "$week": "$createdAt" },
            "createdAtMonth": { "$month": "$createdAt" },
            "rating": 1
        }
    },
    {
         "$group": {
             "_id": "$createdAtMonth",
             "average": { "$avg": "$rating" },
             "week": { "$first": "$createdAtWeek" }
         }
    }
])