Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il find comando in Azure DocumentDB viene usato per eseguire query sui documenti all'interno di una raccolta. Questo comando è fondamentale per le operazioni di recupero dei dati e può essere personalizzato con filtri, proiezioni e opzioni di query per ottimizzare i risultati.
Sintassi
La sintassi di base per il find comando è:
db.collection.find(query, projection, options)
Parametri
| Parametro | Description |
|---|---|
query |
Documento che specifica i criteri per i documenti da recuperare |
projection |
(Facoltativo) Documento che specifica i campi nei documenti corrispondenti da restituire nel set di risultati |
options |
(Facoltativo) Documento che specifica le opzioni per il comportamento e i risultati delle query |
Esempio(i)
Si consideri questo documento di esempio della raccolta stores nel database 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
}
]
}
]
}
Esempio 1: Recuperare tutti i documenti
Il comando find() senza filtri di query restituisce tutti i documenti nella raccolta.
db.stores.find()
Esempio 2: Recuperare documenti con filtri di query
Recuperare i documenti usando un filtro sulla proprietà name.
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"})
Esempio 3: Recuperare documenti con filtri di query sugli oggetti
Recuperare documenti usando filtri di query sui campi lat e lon all'interno dell'oggetto location.
db.stores.find({"location.lat": 13.5236, "location.lon": -82.5707})
Quando la notazione punto (.) non viene usata per fare riferimento ai campi all'interno di un oggetto, il filtro di query deve corrispondere esattamente all'intero oggetto, incluso l'ordine dei campi.
db.stores.find({"location": {"lat": 13.5236, "lon": -82.5707}})
Esempio 4: Recuperare documenti con filtri di query su matrici
Recuperare i documenti dalla matrice promotionEvents in cui eventName è "Grand Bargain Gala".
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"})
Recuperare i documenti dalla matrice "sconti", annidata all'interno della matrice promotionEvents in cui categoryName è "Area Rugs".
db.stores.find({"promotionEvents.discounts.categoryName": "Area Rugs"})
Proiezioni
Il secondo documento nel comando find specifica l'elenco di campi da proiettare nella risposta.
Includere un campo specifico o più campi nella risposta
Un valore intero diverso da zero o un valore booleano true include il campo nella risposta.
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})
Tutte e quattro le query sono equivalenti e specificano l'inclusione dei campi "location" e "sales" nella risposta del server.
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"location": {
"lat": 13.5236,
"lon": -82.5707
},
"sales": {
"totalSales": 35346,
"salesByCategory": [
{
"categoryName": "Rulers",
"totalSales": 35346
}
]
}
}
Escludere un campo specifico o più campi nella risposta
Un valore intero pari a zero o un valore booleano false esclude il campo specificato dalla risposta della query.
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})
Entrambe le query sono equivalenti e restituiscono la risposta seguente:
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"name": "Fourth Coffee | Stationery Haven - New Franco",
"staff": {
"totalStaff": {
"fullTime": 17,
"partTime": 5
}
}
}
Annotazioni
Per impostazione predefinita, il campo _id è incluso nella risposta del server. Il documento di proiezione non può contenere clausole di inclusione ed esclusione. Tuttavia, il campo _id è l'unica eccezione a questa regola e può essere escluso insieme a un elenco di campi da includere e viceversa.
Proiettare il primo elemento in una matrice che corrisponde ai criteri di filtro delle query
Il comando "arrayFieldName".$ proietta solo la prima occorrenza di un oggetto in una matrice che corrisponde ai filtri di query specificati.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.$": true})
Uno dei documenti restituiti mostra solo il primo elemento nella matrice promotionEvents con il nome dell'evento "Grand Bargain Gala", escludendo tutti gli altri elementi nella matrice.
{
"_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
}
]
}
]
}
Proiettare elementi specifici in una matrice che corrispondono ai criteri di filtro delle query
Questa query proietta la proprietà eventName e la proprietà Year annidata all'interno della matrice promotionEvents.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.eventName": true, "promotionEvents.promotionalDates.startDate.Year": true})
Uno dei documenti restituiti mostra gli elementi della matrice specificati proiettati nella risposta.
{
"_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
}
}
}
]
}