Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Operatorn $type hämtar dokument om ett valt fält är av den angivna typen. Operatorn $type är användbar vid dataverifiering och för att säkerställa konsekvens mellan dokument i en samling.
Syntax
{
<field>: { $type: <BSON type number> | <string alias> }
}
Parameterar
| Parameter | Description |
|---|---|
field |
Fältet för att kontrollera typen av. |
BSON type number |
Ett tal som motsvarar BSON-typen (t.ex. 1 för dubbel, 2 för sträng). |
string alias |
Ett strängalias för BSON-typen (t.ex. "double", "string", "object", "array"). |
Vanliga BSON-typer
| Typ | Nummer | Alias | Description |
|---|---|---|---|
| Double | 1 | "double" | 64-bitars flyttals |
| String | 2 | "string" | UTF-8-sträng |
| Object | 3 | "object" | Inbäddat dokument |
| Array | 4 | "array" | Array |
| Objekt-ID | 7 | "objectId" | Objekt-ID |
| Boolean | 8 | "bool" | Boolean |
| Date | 9 | "date" | Date |
| Null | 10 | "null" | Null-värde |
| 32-bit heltal | 16 | "int" | 32-bit heltal |
| Tidsstämpel | 17 | "timestamp" | Tidsstämpel |
| 64-bitars heltal | 18 | "long" | 64-bitars heltal |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1: Hitta butiker med strängtypsnamn
Om du vill hitta en butik vars namn är av typen sträng, kör en fråga med operatorn $type på namnfältet. Sedan projicerar du bara fälten ID och namn och begränsar resultatet till ett dokument från resultatuppsättningen.
db.stores.find({
"name": {
$type: "string"
}
}, {
"_id": 1,
"name": 1
}).limit(1)
Den här frågan returnerar följande resultat:
[
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
}
]
Exempel 2: Dataverifiering med hjälp av flera typkontroller
Den här frågan visar hur du verifierar att viktiga fält i samlingens dokumentstruktur har önskade datatyper.
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
}
)
Den här frågan returnerar följande resultat.
[
{
"_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
}
}
}
]