Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $type Operator ruft Dokumente ab, wenn ein ausgewähltes Feld vom angegebenen Typ ist. Der $type-Operator ist bei der Datenüberprüfung nützlich und stellt die Konsistenz zwischen Dokumenten in einer Sammlung sicher.
Syntax
{
<field>: { $type: <BSON type number> | <string alias> }
}
Die Parameter
| Parameter | Description |
|---|---|
field |
Das Feld, dessen Typ überprüft werden soll. |
BSON type number |
Eine Zahl, die dem BSON-Typ entspricht (z. B. 1 für doppelt, 2 für Zeichenfolge). |
string alias |
Ein Zeichenfolgenalias für den BSON-Typ (z. B. doppelt, Zeichenfolge, Objekt oder Array). |
Allgemeine BSON-Typen
| Typ | Number | Alias | Description |
|---|---|---|---|
| Double | 1 | "double" | 64-Bit-Gleitkomma |
| String | 2 | "string" | UTF-8-Zeichenfolge |
| Object | 3 | "object" | Eingebettetes Dokument |
| Array | 4 | "array" | Array |
| Objekt-ID | 7 | "objectId" | Objekt-ID |
| Boolean | 8 | "bool" | Boolean |
| Datum | 9 | "date" | Datum |
| Null | 10 | "null" | Nullwert |
| 32-Bit-Ganzzahl | 16 | "int" | 32-Bit-Ganzzahl |
| Zeitstempel | 17 | "timestamp" | Zeitstempel |
| 64-Bit-Ganzzahl | 18 | "long" | 64-Bit-Ganzzahl |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_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
}
]
}
]
}
Beispiel 1: Suchen von Speichern mit Zeichenfolgentypnamen
Um einen Speicher zu finden, dessen Name vom Typ Zeichenfolge ist, führen Sie eine Abfrage mithilfe des $type-Operators im Namensfeld aus. Projektieren Sie dann nur die Felder "ID" und "Name", und beschränken Sie die Ergebnisse auf ein Dokument aus dem Resultset.
db.stores.find({
"name": {
$type: "string"
}
}, {
"_id": 1,
"name": 1
}).limit(1)
Diese Abfrage gibt das folgende Ergebnis zurück:
[
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
}
]
Beispiel 2: Datenüberprüfung mithilfe mehrerer Typüberprüfungen
Diese Abfrage veranschaulicht, wie überprüft wird, ob wichtige Felder in der Dokumentstruktur der Auflistung die gewünschten Datentypen aufweisen.
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
}
)
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_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
}
}
}
]