Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’APPLIQUE À : MongoDB vCore
L’opérateur $type
sélectionne des documents si un champ est du type spécifié. Cela est utile pour la validation des données et garantir la cohérence entre les documents d’une collection. L’opérateur $type
accepte les numéros de type BSON et les alias de chaîne.
Syntaxe
La syntaxe de l’opérateur $type
est la suivante :
{
<field>: { $type: <BSON type number> | <string alias> }
}
Paramètres
Descriptif | |
---|---|
field |
Champ pour vérifier le type de. |
BSON type number |
Nombre correspondant au type BSON (par exemple, 1 pour le double, 2 pour la chaîne). |
string alias |
Alias de chaîne pour le type BSON (par exemple, « double », « string », « object », « array »). |
Types BSON courants
Catégorie | Numéro | Pseudonyme | Descriptif |
---|---|---|---|
Double | 1 | « double » | Virgule flottante 64 bits |
Chaîne | 2 | « string » | Chaîne UTF-8 |
Objet | 3 | « object » | Document incorporé |
Tableau | 4 | « array » | Tableau |
Identifiant d'objet (ObjectId) | 7 | « objectId » | Identifiant d'objet (ObjectId) |
Booléen | 8 | « bool » | Booléen |
Date (Jour/Mois/Année) | 9 | « date » | Date (Jour/Mois/Année) |
Zéro | 10 | « null » | Valeur Null |
Entier de 32 bits | 16 | « int » | Entier de 32 bits |
Horodatage | 17 | « timestamp » | Horodatage |
Entier 64 bits | 18 | « long » | Entier 64 bits |
Exemple :
Comprenons l’utilisation avec l’exemple JSON du jeu de stores
données.
{
"_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, "partTime": 19 } },
"sales": {
"salesByCategory": [ { "categoryName": "Desk Lamps", "totalSales": 37978 } ],
"revenue": 37978
},
"promotionEvents": [
{
"eventName": "Crazy Deal Days",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 9, "Day": 27 },
"endDate": { "Year": 2023, "Month": 10, "Day": 4 }
},
"discounts": [
{ "categoryName": "Desks", "discountPercentage": 22 },
{ "categoryName": "Filing Cabinets", "discountPercentage": 23 }
]
}
],
"company": "Trey Research",
"city": "Lake Freeda",
"storeOpeningDate": "2024-09-26T22:55:25.779Z",
"lastUpdated": "Timestamp({ t: 1729983325, i: 1 })"
}
Exemple 1 : Rechercher des magasins avec des noms de type chaîne
L’exemple recherche tous les magasins où le name
champ est de type chaîne.
db.stores.find(
{ "name": { $type: "string" }},
{ "_id": 1, "name": 1 }).limit(1)
La requête retourne tous les documents où le name
champ contient une valeur de chaîne.
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
}
Exemple 2 : Validation des données à l’aide de plusieurs vérifications de type
Cet exemple montre comment valider que les champs essentiels ont les types de données corrects.
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 }
)
La requête retourne des magasins où tous les champs spécifiés ont les types de données attendus, ce qui permet de garantir la cohérence des données.
{
"_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 } }
}
Contenu connexe
- Passez en revue les options de Migration de MongoDB vers Azure Cosmos DB for MongoDB (vCore)
- En savoir plus sur la Compatibilité des caractéristiques avec MongoDB