Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
La find commande dans Azure DocumentDB est utilisée pour interroger des documents au sein d’une collection. Cette commande est fondamentale pour les opérations de récupération de données et peut être personnalisée avec des filtres, des projections et des options de requête pour affiner les résultats.
Syntaxe
La syntaxe de base de la find commande est la suivante :
db.collection.find(query, projection, options)
Paramètres
| Paramètre | Descriptif |
|---|---|
query |
Document qui spécifie les critères pour les documents à récupérer |
projection |
(Facultatif) Document qui spécifie les champs des documents correspondants à retourner dans le jeu de résultats |
options |
(Facultatif) Document qui spécifie des options pour le comportement et les résultats de la requête |
Exemple(s)
Considérez cet exemple de document à partir de la collection de magasins dans la base de données StoreData.
{
"_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
}
]
}
]
}
Exemple 1 : Récupérer tous les documents
La commande find() sans filtres de requête retourne tous les documents de la collection.
db.stores.find()
Exemple 2 : Récupérer des documents avec des filtres de requête
Récupérez des documents à l’aide d’un filtre sur la propriété name.
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"})
Exemple 3 : Récupérer des documents avec des filtres de requête sur des objets
Récupérez des documents à l’aide de filtres de requête sur les champs lat et lon dans l’objet d’emplacement.
db.stores.find({"location.lat": 13.5236, "location.lon": -82.5707})
Lorsque la notation point (.) n’est pas utilisée pour référencer des champs dans un objet, le filtre de requête doit correspondre exactement à l’objet entier, y compris l’ordre des champs.
db.stores.find({"location": {"lat": 13.5236, "lon": -82.5707}})
Exemple 4 : Récupérer des documents avec des filtres de requête sur des tableaux
Récupérez des documents à partir du tableau promotionEvents où eventName est « Grand Bargain Gala ».
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"})
Récupérez des documents à partir du tableau « discounts », qui est imbriqué dans le tableau promotionEvents où le categoryName est « Area Rugs ».
db.stores.find({"promotionEvents.discounts.categoryName": "Area Rugs"})
Prévisions
Le deuxième document de la commande find spécifie la liste des champs à projeter dans la réponse.
Inclure un champ spécifique ou plusieurs champs dans la réponse
Une valeur entière non nulle ou une valeur booléenne de true inclut le champ dans la réponse.
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"location": 1, "sales": 1})
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"location": true, "sales": true})
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"location": 1, "sales": true})
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"location": 1, "sales": -5})
Les quatre requêtes sont équivalentes et spécifient l’inclusion des champs « location » et « sales » dans la réponse du serveur.
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"location": {
"lat": 13.5236,
"lon": -82.5707
},
"sales": {
"totalSales": 35346,
"salesByCategory": [
{
"categoryName": "Rulers",
"totalSales": 35346
}
]
}
}
Exclure un champ spécifique ou plusieurs champs dans la réponse
Une valeur entière de zéro ou une valeur booléenne de false exclut le champ spécifié de la réponse de requête.
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"promotionEvents": 0, "location": 0, "sales": 0})
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"}, {"promotionEvents": false, "location": false, "sales": false})
Les deux requêtes sont équivalentes et retournent la réponse suivante :
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"name": "Fourth Coffee | Stationery Haven - New Franco",
"staff": {
"totalStaff": {
"fullTime": 17,
"partTime": 5
}
}
}
Note
Par défaut, le champ _id est inclus dans la réponse du serveur. Le document de projection ne peut pas contenir à la fois des clauses d’inclusion et d’exclusion. Toutefois, le champ _id est la seule exception à cette règle et peut être exclu avec une liste de champs à inclure et inversement.
Projeter le premier élément d’un tableau qui correspond aux critères de filtre de requête
La commande « arrayFieldName ».$ projette uniquement la première occurrence d’un objet dans un tableau qui correspond aux filtres de requête spécifiés.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.$": true})
L’un des documents retournés affiche uniquement le premier élément du tableau promotionEvents qui porte le nom de l’événement « Grand Bargain Gala » tout en excluant tous les autres éléments du tableau.
{
"_id": "d7fe6fb9-57e8-471a-b8d2-714e3579a415",
"promotionEvents": [
{
"eventName": "Grand Bargain Gala",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 25
},
"endDate": {
"Year": 2024,
"Month": 4,
"Day": 1
}
},
"discounts": [
{
"categoryName": "Area Rugs",
"discountPercentage": 7
},
{
"categoryName": "Vinyl Flooring",
"discountPercentage": 12
}
]
}
]
}
Éléments spécifiques du projet dans un tableau qui correspondent aux critères de filtre de requête
Cette requête projette la propriété eventName et la propriété Year imbriquée dans le tableau promotionEvents.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.eventName": true, "promotionEvents.promotionalDates.startDate.Year": true})
L’un des documents retournés affiche les éléments de tableau spécifiés projetés dans la réponse.
{
"_id": "d7fe6fb9-57e8-471a-b8d2-714e3579a415",
"promotionEvents": [
{
"eventName": "Grand Bargain Gala",
"promotionalDates": {
"startDate": {
"Year": 2024
}
}
},
{
"eventName": "Grand Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024
}
}
},
{
"eventName": "Epic Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024
}
}
}
]
}