Sdílet prostřednictvím


$all

Operátor $all slouží k výběru dokumentů, kde hodnota pole je pole, které obsahuje všechny zadané prvky. Tento operátor je užitečný, pokud potřebujete zajistit, aby pole pole obsahovalo více zadaných prvků bez ohledu na jejich pořadí v matici.

Syntaxe

db.collection.find({
    field : {
        $all: [ < value1 > , < value2 > ]
    }
})

Parametry

Parameter Description
field Pole, na které se má dotazovat.
<value1> , <value2> Hodnoty, které musí být všechny v poli pole.

Examples

Podívejte se na tento ukázkový dokument z kolekce stores.

{
    "_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
                }
            ]
        }
    ]
}

Příklad 1: Vyhledání dokumentů obsahujících všechny zadané prvky v poli

Tento dotaz načte dokumenty obsahující prvky Laptops i Smartphones pole salesByCategory.categoryName .

db.stores.find({
    "sales.salesByCategory.categoryName": {
        $all: ["Laptops", "Smartphones"]
    }
}, {
    _id: 1,
    "sales.salesByCategory.categoryName": 1
}).limit(2)

První dva výsledky vrácené tímto dotazem jsou:

[
    {
        "_id": "a57511bb-1ea3-4b26-bf0d-8bf928f2bfa8",
        "sales": {
            "salesByCategory": [
                {
                    "categoryName": "Smartphones"
                },
                {
                    "categoryName": "Laptops"
                }
            ]
        }
    },
    {
        "_id": "ca56d696-5208-40c3-aa04-d4e245df44dd",
        "sales": {
            "salesByCategory": [
                {
                    "categoryName": "Laptops"
                },
                {
                    "categoryName": "Smartphones"
                }
            ]
        }
    }
]