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

Mongo:Hvordan grupperes efter $uge, men returnerer startdatoen og slutdatoen for hver uge i stedet?

Selvom det kan lade sig gøre, gør koden mindre læsbar og mere kompleks.

Jeg vil omskrive $group fase for at inkludere year sammen med weeks og tilføj $project trin for at formatere dataene efter krav.

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,
    },
  },
])

Fortæl mig, hvis du har brug for en forklaring på hvert trin og hver operatør, der bruges, og hvorfor jeg brugte den.

Mongo Playground Sample Execution



  1. Sådan installeres MongoDB Community Edition på Ubuntu

  2. Kan ikke forbinde Hive med MongoDB ved hjælp af mongo-hadoop-stik

  3. Hvilken NoSQL-database til ekstremt store datamængder

  4. mongoexport JSON-parsingsfejl