Delen via


find

De find opdracht in Azure DocumentDB wordt gebruikt om query's uit te voeren op documenten in een verzameling. Deze opdracht is essentieel voor bewerkingen voor het ophalen van gegevens en kan worden aangepast met filters, projecties en queryopties om de resultaten af te stemmen.

Syntaxis

De basissyntaxis voor de find opdracht is:

db.collection.find(query, projection, options)

Parameterwaarden

Kenmerk Description
query Een document met de criteria voor de documenten die moeten worden opgehaald
projection (Optioneel) Een document met de velden in de overeenkomende documenten die moeten worden geretourneerd in de resultatenset
options (Optioneel) Een document met opties voor querygedrag en resultaten

Voorbeeld(en)

Bekijk dit voorbeelddocument uit de archiefverzameling in de StoreData-database.

{
    "_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
                }
            ]
        }
    ]
}

Voorbeeld 1: Alle documenten ophalen

Met de opdracht find() zonder queryfilters worden alle documenten in de verzameling geretourneerd.

db.stores.find()

Voorbeeld 2: Documenten ophalen met queryfilters

Documenten ophalen met behulp van een filter op de naameigenschap.

db.stores.find({"name": "Fourth Coffee | Stationery Haven - New Franco"})

Voorbeeld 3: Documenten ophalen met queryfilters op objecten

Haal documenten op met behulp van queryfilters op de velden lat en lon binnen het locatieobject.

db.stores.find({"location.lat": 13.5236, "location.lon": -82.5707})

Wanneer de punt-notatie (.) niet wordt gebruikt om te verwijzen naar velden binnen een object, moet het queryfilter exact overeenkomen met het hele object, inclusief de volgorde van de velden.

db.stores.find({"location": {"lat": 13.5236, "lon": -82.5707}})

Voorbeeld 4: Documenten ophalen met queryfilters op matrices

Haal documenten op uit de matrix promotionEvents waarbij de eventName "Grand Bargain Gala" is.

db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"})

Haal documenten op uit de matrix 'kortingen', die is genest in de matrix promotionEvents waarbij de categoryName 'Area Rugs' is.

db.stores.find({"promotionEvents.discounts.categoryName": "Area Rugs"})

Prognoses

Het tweede document in de opdracht Zoeken geeft de lijst met velden op die in het antwoord moeten worden projecteren.

Een specifiek veld of meerdere velden opnemen in het antwoord

Een niet-nul geheel getal of een booleaanse waarde van true bevat het veld in het antwoord.

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})

Alle vier de query's zijn gelijkwaardig en geven de opname op van de velden 'locatie' en 'verkoop' in het serverantwoord.

{
    "_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
    "location": {
        "lat": 13.5236,
        "lon": -82.5707
    },
    "sales": {
        "totalSales": 35346,
        "salesByCategory": [
            {
                "categoryName": "Rulers",
                "totalSales": 35346
            }
        ]
    }
}

Een specifiek veld of meerdere velden in het antwoord uitsluiten

Een geheel getal van nul of een booleaanse waarde van onwaar sluit het opgegeven veld uit van het queryantwoord.

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})

Beide query's zijn gelijkwaardig en retourneren het volgende antwoord:

{
    "_id": "b5c9f932-4efa-49fd-86ba-b35624d80d95",
    "name": "Fourth Coffee | Stationery Haven - New Franco",
    "staff": {
        "totalStaff": {
            "fullTime": 17,
            "partTime": 5
        }
    }
}

Opmerking

Standaard wordt het _id veld opgenomen in het serverantwoord. Het projectiedocument mag geen insluitings- en uitsluitingsclausules bevatten. Het _id veld is echter de enige uitzondering op deze regel en kan worden uitgesloten, samen met een lijst met velden die moeten worden opgenomen en omgekeerd.

Projecteer het eerste element in een matrix die overeenkomt met de queryfiltercriteria

De opdracht arrayFieldName.$ projecteert alleen het eerste exemplaar van een object in een matrix die overeenkomt met de opgegeven queryfilters.

db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.$": true})

Een van de geretourneerde documenten toont alleen het eerste element in de matrix promotionEvents met de gebeurtenisnaam 'Grand Bargain Gala' terwijl alle andere elementen in de matrix worden uitgesloten.

{
    "_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
                }
            ]
        }
    ]
}

Projectspecifieke elementen in een matrix die voldoen aan de queryfiltercriteria

Met deze query worden de eigenschap eventName en de eigenschap Genest Year binnen de matrix promotionEvents geprojecteerd.

db.stores.find({"promotionEvents.eventName": "Grand Bargain Gala"}, {"promotionEvents.eventName": true, "promotionEvents.promotionalDates.startDate.Year": true})

Een van de geretourneerde documenten toont de opgegeven matrixelementen die in het antwoord zijn geprojecteerd.

{
    "_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
                }
            }
        }
    ]
}