Not
Å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.
Kommandot find i Azure DocumentDB används för att fråga dokument i en samling. Det här kommandot är grundläggande för datahämtningsåtgärder och kan anpassas med filter, projektioner och frågealternativ för att finjustera resultatet.
Syntax
Den grundläggande syntaxen find för kommandot är:
db.collection.find(query, projection, options)
Parameterar
| Parameter | Description |
|---|---|
query |
Ett dokument som anger villkoren för de dokument som ska hämtas |
projection |
(Valfritt) Ett dokument som anger fälten i de matchande dokument som ska returneras i resultatuppsättningen |
options |
(Valfritt) Ett dokument som anger alternativ för frågebeteende och resultat |
Exempel
Överväg det här exempeldokumentet från lagringssamlingen i StoreData-databasen.
{
"_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: Hämta alla dokument
Kommandot find() utan frågefilter returnerar alla dokument i samlingen.
db.stores.find()
Exempel 2: Hämta dokument med frågefilter
Hämta dokument med hjälp av ett filter för namnegenskapen.
db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"})
Exempel 3: Hämta dokument med frågefilter på objekt
Hämta dokument med hjälp av frågefilter i fälten lat och lon i platsobjektet.
db.stores.find({"location.lat": 13.5236, "location.lon": -82.5707})
När punkt-notationen (.) inte används för att referera till fält i ett objekt ska frågefiltret exakt matcha hela objektet, inklusive ordningen på fälten.
db.stores.find({"location": {"lat": 13.5236, "lon": -82.5707}})
Exempel 4: Hämta dokument med frågefilter på matriser
Hämta dokument från matrisen promotionEvents där eventName är "Grand Bargain Gala".
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"})
Hämta dokument från matrisen "rabatter", som är kapslad i matrisen promotionEvents där categoryName är "Area Rugs".
db.stores.find({"promotionEvents.discounts.categoryName": "Area Rugs"})
Prognoser
Det andra dokumentet i sökkommandot anger listan över fält som ska projiceras i svaret.
Inkludera ett visst fält eller flera fält i svaret
Ett heltalsvärde som inte är noll eller ett booleskt värde av true innehåller fältet i svaret.
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})
Alla fyra frågorna är likvärdiga och anger inkluderingen av fälten "location" och "sales" i serversvaret.
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"location": {
"lat": 13.5236,
"lon": -82.5707
},
"sales": {
"totalSales": 35346,
"salesByCategory": [
{
"categoryName": "Rulers",
"totalSales": 35346
}
]
}
}
Exkludera ett visst fält eller flera fält i svaret
Ett heltalsvärde på noll eller ett booleskt värde för false undantar det angivna fältet från frågesvaret.
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})
Båda frågorna är likvärdiga och returnerar följande svar:
{
"_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
"name": "Fourth Coffee | Stationery Haven - New Franco",
"staff": {
"totalStaff": {
"fullTime": 17,
"partTime": 5
}
}
}
Anmärkning
Som standard ingår fältet _id i serversvaret. Projektionsdokumentet får inte innehålla både inkluderings- och exkluderingssatser. Det _id fältet är dock det enda undantaget till den här regeln och kan undantas tillsammans med en lista över fält som ska inkluderas och vice versa.
Projicera det första elementet i en matris som matchar frågefiltervillkoren
Kommandot "arrayFieldName".$ projicerar endast den första förekomsten av ett objekt i en matris som matchar de angivna frågefiltren.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.$": true})
Ett av dokumenten som returneras visar endast det första elementet i matrisen promotionEvents som har händelsenamnet "Grand Bargain Gala" samtidigt som alla andra element i matrisen exkluderas.
{
"_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
}
]
}
]
}
Projektspecifika element i en matris som matchar frågefiltervillkoren
Den här frågan projicerar egenskapen eventName och egenskapen nested Year i matrisen promotionEvents.
db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.eventName": true, "promotionEvents.promotionalDates.startDate.Year": true})
Ett av dokumenten som returneras visar de angivna matriselementen som projiceras i svaret.
{
"_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
}
}
}
]
}