sql >> Databasteknik >  >> NoSQL >> MongoDB

gruppera efter dag/månad och ta genomsnittet av betyg den dagen/månaden i mongo

För att gruppera dokument efter dag/månad och returnera månadsnyckeln i din utdata måste du först $project nyckelfälten till lämpliga format med datum operatörer, särskilt $ dateToString och $month operatörer.

Detta kan göras i en $project skede före $group steg men inte nödvändigt eftersom $grupp pipeline rymmer mestadels ackumulatorn operatörer.

I föregående $group pipeline, kan du gruppera dokumenten efter den formaterade datumnyckeln, aggregera med $avg operatör och returnera månaden som ett heltal från föregående pipeline med $first ackumulatoroperatör.

Att köra följande aggregeringspipeline bör ge dig det önskade resultatet:

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


  1. Spring Boot kan inte uppdatera sharded-samlingen på azure cosmos db(MongoDb)

  2. Redis `SCAN`:hur bibehåller man en balans mellan nya inkommande nycklar som kan matcha och säkerställa ett slutligt resultat inom rimlig tid?

  3. Redis sorterade set och bästa sättet att lagra uids

  4. En samling inom en samling