Megosztás:


$bitsAllSet

Az $bitsAllSet operátor olyan dokumentumok egyeztetésére szolgál, amelyekben az összes megadott bitpozíció be van állítva (azaz 1). Ez az operátor az egész számértékeket tároló mezők bitenkénti műveleteinek végrehajtásához hasznos. Olyan helyzetekben használható, ahol egy egész számmezőben beállított adott bitek alapján kell szűrnie a dokumentumokat.

Szemantika

{
  <field>: { $bitsAllSet: <bitmask> }
}

Paraméterek

Paraméter Description
field A dokumentum azon mezője, amelyen a bitenkénti műveletet végre kell hajtani.
<bitmask> Egy bitmaszk, amely jelzi, hogy mely biteket kell beállítani a mező értékében.

Példák

Tekintse át ezt a mintadokumentumot az áruházak gyűjteményéből.

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

A storeFeatures mező egy bitmaszk egész szám, amely különböző tárolási képességeket jelöl. Minden bit egy funkciónak felel meg:

Bit Érték Tulajdonság
0 1 In-Store csomagfelvétel
1 2 Parkoló
2 4 Kerekesszékes hozzáférés
3 8 Nyitva 24 óra
4 16 Pet-Friendly
5 32 Ingyenes Wi-Fi
6 64 Mellékhelyiségek
7 128 Házhozszállítás

1. példa: Parkolóval és mellékhelyiségekkel rendelkező üzletek keresése

Ez a lekérdezés lekéri a parkolási ÉS mellékhelyiségekkel rendelkező üzleteket (1. és 6. bit)

db.stores.find({
    storeFeatures: {
        $bitsAllSet: [1, 6]
    }
}, {
    _id: 1,
    name: 1,
    storeFeatures: 1
}).limit(5)

Egyenérték:

db.stores.find({
    storeFeatures: {
        $bitsAllSet: 66
    }
}, {
    _id: 1,
    name: 1,
    storeFeatures: 1
}).limit(5)

A lekérdezés által visszaadott első öt eredmény a következő:

[
  {
    "_id": "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
    "name": "Contoso, Ltd. | Office Supply Deals - South Shana",
    "storeFeatures": 86
  },
  {
    "_id": "44fdb9b9-df83-4492-8f71-b6ef648aa312",
    "name": "Fourth Coffee | Storage Solution Gallery - Port Camilla",
    "storeFeatures": 222
  },
  {
    "_id": "728c068a-638c-40af-9172-8ccfa7dddb49",
    "name": "Contoso, Ltd. | Book Store - Lake Myron",
    "storeFeatures": 239
  },
  {
    "_id": "a2b54e5c-36cd-4a73-b547-84e21d91164e",
    "name": "Contoso, Ltd. | Baby Products Corner - Port Jerrold",
    "storeFeatures": 126
  },
  {
    "_id": "dda2a7d2-6984-40cc-bbea-4cbfbc06d8a3",
    "name": "Contoso, Ltd. | Home Improvement Closet - Jaskolskiview",
    "storeFeatures": 107
  }
]