Freigeben über


find

Der find Befehl in Azure DocumentDB wird verwendet, um Dokumente in einer Auflistung abzufragen. Dieser Befehl ist grundlegend für Datenabrufvorgänge und kann mit Filtern, Projektionen und Abfrageoptionen angepasst werden, um die Ergebnisse zu optimieren.

Syntax

Die grundlegende Syntax für den find Befehl lautet:

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

Die Parameter

Parameter Description
query Ein Dokument, das die Kriterien für die abzurufenden Dokumente angibt
projection (Optional) Ein Dokument, das die Felder in den übereinstimmenden Dokumenten angibt, die im Resultset zurückgegeben werden sollen
options (Optional) Ein Dokument, das Optionen für das Abfrageverhalten und die Ergebnisse angibt

Beispiel(n)

Betrachten Sie dieses Beispieldokument aus der Speichersammlung in der StoreData-Datenbank.

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

Beispiel 1: Abrufen aller Dokumente

Der Befehl "suchen()" ohne Abfragefilter gibt alle Dokumente in der Auflistung zurück.

db.stores.find()

Beispiel 2: Abrufen von Dokumenten mit Abfragefiltern

Dient zum Abrufen von Dokumenten mithilfe eines Filters für die Namenseigenschaft.

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

Beispiel 3: Abrufen von Dokumenten mit Abfragefiltern für Objekte

Abrufen von Dokumenten mithilfe von Abfragefiltern in den Feldern lat und lon innerhalb des Speicherortobjekts.

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

Wenn die Punktnotation (.) nicht zum Verweisen auf Felder innerhalb eines Objekts verwendet wird, sollte der Abfragefilter exakt mit dem gesamten Objekt übereinstimmen, einschließlich der Reihenfolge der Felder.

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

Beispiel 4: Abrufen von Dokumenten mit Abfragefiltern in Arrays

Rufen Sie Dokumente aus dem Array "promotionEvents" ab, wobei der eventName "Grand Bargain Gala" lautet.

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

Rufen Sie Dokumente aus dem Array "Rabatte" ab, das innerhalb des Arrays "promotionEvents" geschachtelt ist, wobei der CategoryName "Area Rugs" lautet.

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

Projektionen

Das zweite Dokument im Befehl "Suchen" gibt die Liste der Felder an, die in der Antwort projiziert werden sollen.

Einschließen eines bestimmten Felds oder mehrerer Felder in die Antwort

Ein ganzzahliger Wert ungleich Null oder ein boolescher Wert von "true" enthält das Feld in der Antwort.

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 Abfragen sind gleichwertig und geben die Aufnahme der Felder "Location" und "sales" in die Serverantwort an.

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

Ausschließen eines bestimmten Felds oder mehrerer Felder in der Antwort

Ein ganzzahliger Wert von Null oder ein boolescher Wert von false schließt das angegebene Feld aus der Abfrageantwort aus.

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 Abfragen sind gleichwertig und geben die folgende Antwort zurück:

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

Hinweis

Standardmäßig ist das feld _id in der Serverantwort enthalten. Das Projektionsdokument darf sowohl Einschluss- als auch Ausschlussklauseln nicht enthalten. Das feld _id ist jedoch die einzige Ausnahme für diese Regel und kann zusammen mit einer Liste von Feldern ausgeschlossen werden, die eingeschlossen und umgekehrt werden sollen.

Projizieren des ersten Elements in einem Array, das den Abfragefilterkriterien entspricht

Der Befehl "arrayFieldName".$ projiziert nur das erste Vorkommen eines Objekts in einem Array, das den angegebenen Abfragefiltern entspricht.

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

Eines der zurückgegebenen Dokumente zeigt nur das erste Element im promotionEvents-Array mit dem Ereignisnamen "Grand Bargain Gala" an, während alle anderen Elemente im Array ausgeschlossen werden.

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

Projektspezifische Elemente in einem Array, die den Abfragefilterkriterien entsprechen

Diese Abfrage projektiert die EventName-Eigenschaft und die geschachtelte Year-Eigenschaft innerhalb des Arrays "promotionEvents".

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

Eines der zurückgegebenen Dokumente zeigt die angegebenen Arrayelemente, die in der Antwort projiziert wurden.

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