MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongo:Bagaimana cara mengelompokkan berdasarkan $minggu tetapi mengembalikan tanggal mulai dan tanggal akhir setiap minggu?

Meskipun bisa dilakukan, membuat kode lebih mudah dibaca dan lebih kompleks.

Saya akan menulis ulang $group tahap untuk memasukkan year bersama dengan weeks dan tambahkan $project tahap untuk memformat data sesuai kebutuhan.

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

Beri tahu saya jika Anda memerlukan penjelasan tentang setiap tahapan dan operator yang digunakan serta alasan saya menggunakannya.

Eksekusi Contoh Mongo Playground



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Koneksi yang tersedia MongoDB

  2. Biarkan ClusterControl baru Mengamankan Deployment MongoDB Anda

  3. Di mana menulis dan menyimpan peta mongoDB/mengurangi fungsi dalam proyek java

  4. Parameter kueri penelusuran opsional luwak?

  5. 5 Cara Mendapatkan Jam dari Tanggal di MongoDB