sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo:Hur grupperar jag efter $vecka men returnerar startdatum och slutdatum för varje vecka istället?

Även om det är genomförbart, gör koden mindre läsbar och mer komplex.

Jag kommer att skriva om $group steg för att inkludera year tillsammans med weeks och lägg till $project steg för att formatera data enligt kravet.

db.collection.aggregate([
  {
    "$group": {
      "_id": {
        "week": {
          "$week": {"$subtract": ["$at", 25200000]}  // <-- Changes timezone to -07:00
        },
        "year": {
          "$year": {"$subtract": ["$at", 25200000]}  // <-- Changes timezone to -07:00
        },
      },
      // <-- Add keys to be added in group along with its logics
      "averageValue": {
        "$avg": "$readings.level_1"
      }
    },
  },
  {
    "$project": {
      "_id": {
        "startDate": {
          "$dateToString": {
            "date": {
              "$dateFromParts": {
                "isoWeekYear": "$_id.year",
                "isoWeek": "$_id.week"
              }
            },
            "format": "%Y-%m-%d",
          },
        },
        "endDate": {
          "$dateToString": {
            "date": {
              "$add": [
                {
                  "$dateFromParts": {
                    "isoWeekYear": "$_id.year",
                    "isoWeek": "$_id.week"
                  }
                },
                518400000,
              ],
            },
            "format": "%Y-%m-%d",
          },
        },
      },
      // <-- Add remaining keys to be projected
      "averageValue": 1,
    },
  },
])

Låt mig veta om du behöver en förklaring av varje steg och operatör som används och varför jag använde den.

Exekvering av Mongo Playground



  1. Inget svar efter anslutning från selleri till redis via ssl

  2. MongoDB c#-drivrutin:Skiftlägesokänslig Jämför med in eller innehåller på en lista med linq

  3. Konvertera befintligt MongoDB-strängattribut till BSON::ObjectId

  4. Mongo-PHP - MongoCursor undantag med MongoDB PHP Driver v1.6