$minggu

Operator $week mengembalikan angka minggu untuk tanggal sebagai nilai antara 0 dan 53. Minggu ke-0 dimulai pada 1 Januari, dan minggu berikutnya dimulai pada hari Minggu. Jika tanggal null atau hilang, $week mengembalikan null.

Syntax

Sintaks untuk $objectToArray operator adalah sebagai berikut:

{
  $week: <dateExpression>
}

Atau dengan spesifikasi zona waktu

{
  $week: {
    date: <dateExpression>,
    timezone: <timezoneExpression>
  }
}

Parameter-parameternya

Pengaturan Description
dateExpression Ekspresi apa pun yang diselesaikan ke Tanggal, Tanda Waktu, atau ObjectId.
timezone Optional. Zona waktu yang digunakan untuk perhitungan. Dapat menjadi Pengidentifikasi Zona Waktu Olson (misalnya, "Amerika/New_York") atau offset UTC (misalnya, "+0530").

Examples

Pertimbangkan dokumen sampel ini dari koleksi toko.

{
    "_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
    "name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
    "location": {
        "lat": -89.2384,
        "lon": -46.4012
    },
    "staff": {
        "totalStaff": {
            "fullTime": 8,
            "partTime": 20
        }
    },
    "sales": {
        "totalSales": 75670,
        "salesByCategory": [
            {
                "categoryName": "Wine Accessories",
                "totalSales": 34440
            },
            {
                "categoryName": "Bitters",
                "totalSales": 39496
            },
            {
                "categoryName": "Rum",
                "totalSales": 1734
            }
        ]
    },
    "promotionEvents": [
        {
            "eventName": "Unbeatable Bargain Bash",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 6,
                    "Day": 23
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 7,
                    "Day": 2
                }
            },
            "discounts": [
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 7
                },
                {
                    "categoryName": "Bitters",
                    "discountPercentage": 15
                },
                {
                    "categoryName": "Brandy",
                    "discountPercentage": 8
                },
                {
                    "categoryName": "Sports Drinks",
                    "discountPercentage": 22
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 19
                }
            ]
        },
        {
            "eventName": "Steal of a Deal Days",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 21
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 29
                }
            },
            "discounts": [
                {
                    "categoryName": "Organic Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "White Wine",
                    "discountPercentage": 20
                },
                {
                    "categoryName": "Sparkling Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 17
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 23
                }
            ]
        }
    ]
}

Contoh 1: Dapatkan nomor minggu untuk tanggal pembukaan toko

Kueri ini mengekstrak nomor minggu dari tanggal pembukaan toko.

db.stores.aggregate([
  { $match: { _id: "905d1939-e03a-413e-a9c4-221f74055aac" } },
  {
    $project: {
      name: 1,
      storeOpeningDate: 1,
      openingWeek: { $week: { $toDate: "$storeOpeningDate" } }
    }
  }
])

Kueri ini mengembalikan hasil berikut.

[
  {
    "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
    "name": "Trey Research | Home Office Depot - Lake Freeda",
    "storeOpeningDate": ISODate("2024-12-30T22:55:25.779Z"),
    "openingWeek": 52
  }
]

Contoh 2: Mengelompokkan penyimpanan dengan membuka minggu

Grup kueri ini disimpan menurut minggu mereka dibuka untuk analisis.

db.stores.aggregate([
  {
    $project: {
      name: 1,
      openingWeek: { $week: { $toDate: "$storeOpeningDate" } },
      openingYear: { $year: { $toDate: "$storeOpeningDate" } }
    }
  },
  {
    $group: {
      _id: { week: "$openingWeek", year: "$openingYear" },
      storeCount: { $sum: 1 },
      stores: { $push: "$name" }
    }
  },
  { $sort: { "_id.year": 1, "_id.week": -1 } },
  { $limit : 3 } ])

Kueri ini mengembalikan hasil berikut:

[
  {
    "_id": { "week": 40, "year": 2021 },
    "storeCount": 1,
    "stores": [ "First Up Consultants | Bed and Bath Center - South Amir" ]
  },
  {
    "_id": { "week": 52, "year": 2024 },
    "storeCount": 1,
    "stores": [ "Trey Research | Home Office Depot - Lake Freeda" ]
  },
  {
    "_id": { "week": 50, "year": 2024 },
    "storeCount": 2,
    "stores": [
      "Fourth Coffee | Paper Product Bazaar - Jordanechester",
      "Adatum Corporation | Pet Supply Center - West Cassie"
    ]
  }
]