Bagikan melalui


$size

Operator $size digunakan untuk mengkueri dokumen di mana bidang array memiliki jumlah elemen tertentu. Operator ini berguna saat Anda perlu menemukan dokumen berdasarkan ukuran bidang array, seperti menemukan dokumen dengan beberapa item dalam daftar.

Syntax

db.collection.find({ <field>: { $size: <number> } })

Parameter-parameternya

Pengaturan Description
field Bidang yang berisi array.
number Jumlah elemen yang harus dimiliki array.

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: Menemukan dokumen dengan jumlah elemen tertentu dalam array

Kueri ini mengambil dokumen dari stores koleksi tempat sales.salesByCategory array berisi tepat tujuh item.

db.stores.find({
    "sales.salesByCategory": {
        $size: 7
    }
}, {
    _id: 1,
    name: 1,
    "sales.salesByCategory": 1
}).limit(2)

Kueri ini mengembalikan hasil berikut:

[
    {
        "_id": "7ed4b356-1290-433e-bd96-bf95f817eaaa",
        "name": "Wide World Importers",
        "sales": {
            "salesByCategory": [
                {
                    "categoryName": "Ultrabooks",
                    "totalSales": 31304
                },
                {
                    "categoryName": "Laptop Accessories",
                    "totalSales": 10044
                },
                {
                    "categoryName": "Laptops",
                    "totalSales": 48851
                },
                {
                    "categoryName": "Refill Kits",
                    "totalSales": 9604
                },
                {
                    "categoryName": "Prepaid Phones",
                    "totalSales": 28600
                },
                {
                    "categoryName": "Android Phones",
                    "totalSales": 4580
                },
                {
                    "categoryName": "Photo Printers",
                    "totalSales": 35234
                }
            ]
        }
    },
    {
        "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
        "name": "Lakeshore Retail",
        "sales": {
            "salesByCategory": [
                {
                    "categoryName": "Towel Racks",
                    "totalSales": 13237
                },
                {
                    "categoryName": "Washcloths",
                    "totalSales": 44315
                },
                {
                    "categoryName": "Face Towels",
                    "totalSales": 42095
                },
                {
                    "categoryName": "Toothbrush Holders",
                    "totalSales": 47912
                },
                {
                    "categoryName": "Hybrid Mattresses",
                    "totalSales": 48660
                },
                {
                    "categoryName": "Napkins",
                    "totalSales": 31439
                },
                {
                    "categoryName": "Pillow Cases",
                    "totalSales": 38833
                }
            ]
        }
    }
]