Megosztás a következőn keresztül:


$type

Az $type operátor lekéri a dokumentumokat, ha egy kiválasztott mező a megadott típusú. A $type operátor hasznos az adatérvényesítésben és a gyűjtemény dokumentumainak konzisztenciájának biztosításában.

Syntax

{
  <field>: { $type: <BSON type number> | <string alias> }
}

Parameters

Parameter Description
field Az a mező, amely ellenőrzi a típust.
BSON type number A BSON típusnak megfelelő szám (például 1 dupla, sztring esetén 2).
string alias A BSON-típus sztring aliasa (pl. "double", "string", "object", "array").

Gyakori BSON-típusok

Típus Number Alias Description
Double 1 "double" 64 bites lebegőpontos
String 2 "string" UTF-8 sztring
Object 3 "object" Beágyazott dokumentum
Array 4 "array" Array
ObjectId 7 "objectId" ObjectId
logikai 8 "bool" logikai
Date 9 "date" Date
Null 10 "null" Null érték
32 bites egész szám 16 "int" 32 bites egész szám
Timestamp 17 "timestamp" Timestamp
64 bites egész szám 18 "long" 64 bites egész szám

Examples

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

1. példa: Sztring típusú neveket tartalmazó üzletek keresése

Ha meg szeretne keresni egy olyan tárolót, amelynek a neve sztring típusú, futtasson egy lekérdezést a névmező $type operátorával. Ezután csak az azonosító- és névmezőket vetje ki, és az eredményeket az eredményhalmaz egy dokumentumára korlátozza.

db.stores.find({
    "name": {
        $type: "string"
    }
}, {
    "_id": 1,
    "name": 1
}).limit(1)

Ez a lekérdezés a következő eredményt adja vissza:

[
    {
        "_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
        "name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
    }
]

2. példa: Adatérvényesítés több típusú ellenőrzéssel

Ez a lekérdezés bemutatja, hogyan ellenőrizheti, hogy a gyűjtemény dokumentumstruktúrájának alapvető mezői rendelkeznek-e a kívánt adattípusokkal.

db.stores.find({
      "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
      "name": {
          $type: "string"
      },
      "location": {
          $type: "object"
      },
      "staff.employeeCount.fullTime": {
          $type: ["int", "long"]
      },
      "promotionEvents": {
          $type: "array"
      }
  }, {
      "_id": 1,
      "name": 1,
      "location": 1,
      "staff": 1
  }
)

Ez a lekérdezés a következő eredményt adja vissza.

[
    {
        "_id": "905d1939-e03a-413e-a9c4-221f74055aac",
        "name": "Trey Research | Home Office Depot - Lake Freeda",
        "location": {
            "lat": -48.9752,
            "lon": -141.6816
        },
        "staff": {
            "employeeCount": {
                "fullTime": 12
            }
        }
    }
]