MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo:Как да групирате по $week, но вместо това да върнете начална и крайна дата на всяка седмица?

Въпреки че е осъществимо, прави кода по-малко четим и по-сложен.

Ще пренапиша $group етап за включване на year заедно с weeks и добавете $project етап за форматиране на данните според изискването.

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

Уведомете ме, ако имате нужда от обяснение на всеки използван етап и оператор и защо съм го използвал.

Примерно изпълнение на Mongo Playground



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Грешка в същото поле в агрегиране _id

  2. MongoDB forEach()

  3. техники за съхраняване на библиотеки в system.js на mongoDB

  4. Какви са конвенциите за именуване за MongoDB?

  5. Работа с уникални, редки, съставни индекси на mongodb