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

Gruppér efter dag/måned/uge baseret på datointervallet

For gruppering på ugentlig basis skal du køre følgende pipeline, som hovedsageligt bruger Datosammenlægningsoperatører for at udtrække datodelene:

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

og for månedlige aggregater, udskift <-koden>$gruppe tasten for at bruge det oprettede månedsfelt:

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



  1. MongoDB Java - Skub til et indlejret array?

  2. Mongoose Aggregate:begræns antallet af poster i $gruppe

  3. Find alle dokumenter, der deler max(værdi) fundet i aggregeret trin

  4. Lagring af datastrøm fra POST-anmodning i GridFS, express, mongoDB, node.js