sql >> Databasteknik >  >> NoSQL >> MongoDB

Gruppera efter dag/månad/vecka baserat på datumintervallet

För gruppering på veckobasis, kör följande pipeline som huvudsakligen använder Datumaggregationsoperatörer för att extrahera datumdelarna:

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

och för månatliga aggregat, byt ut $grupp för att använda det skapade månadsfältet:

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



  1. MongoDB - hämta dokument med maxattribut per grupp i en samling

  2. MongoDB .NET drivrutin och textsökning

  3. Hur $set Update Operator fungerar i MongoDB

  4. Mongoose-baserad app-arkitektur