Bagikan melalui


find

find Perintah di Azure DocumentDB digunakan untuk mengkueri dokumen dalam koleksi. Perintah ini sangat mendasar untuk operasi pengambilan data dan dapat disesuaikan dengan filter, proyeksi, dan opsi kueri untuk menyempurnakan hasil.

Syntax

Sintaks dasar untuk find perintah adalah:

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

Parameter-parameternya

Pengaturan Description
query Dokumen yang menentukan kriteria untuk dokumen yang akan diambil
projection (Opsional) Dokumen yang menentukan bidang dalam dokumen yang cocok untuk dikembalikan dalam tataan hasil
options (Opsional) Dokumen yang menentukan opsi untuk perilaku dan hasil kueri

Contoh

Pertimbangkan dokumen sampel ini dari koleksi penyimpanan di 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
                }
            ]
        }
    ]
}

Contoh 1: Mengambil semua dokumen

Perintah find() tanpa filter kueri mengembalikan semua dokumen dalam koleksi.

db.stores.find()

Contoh 2: Mengambil dokumen dengan filter kueri

Ambil dokumen menggunakan filter pada properti nama.

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

Contoh 3: Mengambil dokumen dengan filter kueri pada objek

Ambil dokumen menggunakan filter kueri pada bidang lat dan lon dalam objek lokasi.

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

Saat notasi titik (.) tidak digunakan untuk mereferensikan bidang dalam objek, filter kueri harus sama persis dengan seluruh objek termasuk urutan bidang.

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

Contoh 4: Mengambil dokumen dengan filter kueri pada array

Ambil dokumen dari array promotionEvents di mana eventName adalah "Grand Bargain Gala".

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

Ambil dokumen dari array "diskon", yang ditumpuk dalam array promotionEvents di mana categoryName adalah "Area Rugs".

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

Proyeksi

Dokumen kedua dalam perintah temukan menentukan daftar bidang yang akan diproyeksikan dalam respons.

Menyertakan bidang tertentu atau beberapa bidang dalam respons

Nilai bilangan bulat bukan nol atau nilai boolean true menyertakan bidang dalam respons.

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

Keempat kueri setara dan menentukan penyertaan bidang "lokasi" dan "penjualan" dalam respons server.

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

Mengecualikan bidang tertentu atau beberapa bidang dalam respons

Nilai bilangan bulat nol atau nilai boolean false mengecualikan bidang yang ditentukan dari respons kueri.

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

Kedua kueri setara dan mengembalikan respons berikut:

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

Nota

Secara default, bidang _id disertakan dalam respons server. Dokumen proyeksi tidak boleh berisi klausul penyertaan dan pengecualian. Namun, bidang _id adalah satu-satunya pengecualian untuk aturan ini dan dapat dikecualikan bersama dengan daftar bidang yang akan disertakan dan sebaliknya.

Memproyekan elemen pertama dalam array yang cocok dengan kriteria filter kueri

Perintah "arrayFieldName".$ hanya memproyeksikan kemunculan pertama objek dalam array yang cocok dengan filter kueri yang ditentukan.

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

Salah satu dokumen yang dikembalikan hanya menunjukkan elemen pertama dalam array promotionEvents yang memiliki nama acara "Grand Bargain Gala" sambil mengecualikan semua elemen lain dalam array.

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

Memproyekan elemen tertentu dalam array yang cocok dengan kriteria filter kueri

Kueri ini memproyeksikan properti eventName dan properti Tahun berlapis dalam array promotionEvents.

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

Salah satu dokumen yang dikembalikan menunjukkan elemen array yang ditentukan yang diproyeksikan dalam respons.

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