Aracılığıyla paylaş


find

find Azure DocumentDB'deki komut, bir koleksiyondaki belgeleri sorgulamak için kullanılır. Bu komut veri alma işlemleri için temeldir ve sonuçlarda ince ayar yapmak için filtreler, projeksiyonlar ve sorgu seçenekleriyle özelleştirilebilir.

Sözdizimi

Komutun find temel söz dizimi şöyledir:

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

Parametreler

Parametre Description
query Alınacak belgelerin ölçütlerini belirten belge
projection (İsteğe bağlı) Sonuç kümesinde döndürülecek eşleşen belgelerdeki alanları belirten belge
options (İsteğe bağlı) Sorgu davranışı ve sonuçları için seçenekleri belirten belge

Örnekler

StoreData veritabanındaki stores koleksiyonundan bu örnek belgeyi göz önünde bulundurun.

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

Örnek 1: Tüm belgeleri alma

Sorgu filtresi olmayan find() komutu koleksiyondaki tüm belgeleri döndürür.

db.stores.find()

Örnek 2: Sorgu filtreleri olan belgeleri alma

Name özelliğinde bir filtre kullanarak belgeleri alın.

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

Örnek 3: Nesneler üzerinde sorgu filtreleri olan belgeleri alma

Konum nesnesi içindeki lat ve lon alanlarındaki sorgu filtrelerini kullanarak belgeleri alın.

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

Nesne içindeki alanlara başvurmak için nokta (.) gösterimi kullanılmadığında, sorgu filtresi alanların sırası da dahil olmak üzere nesnenin tamamıyla tam olarak eşleşmelidir.

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

Örnek 4: Dizilerde sorgu filtreleri olan belgeleri alma

eventName değerinin "Grand Bargain Gala" olduğu promotionEvents dizisinden belgeleri alın.

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

CategoryName değerinin "Alan Halıları" olduğu promotionEvents dizisi içinde iç içe yerleştirilmiş "indirimler" dizisinden belgeleri alın.

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

Projeksiyonlar

Bul komutundaki ikinci belge, yanıtta yansıtacak alanların listesini belirtir.

Yanıta belirli bir alan veya birden çok alan ekleme

Sıfır olmayan bir tamsayı değeri veya true boole değeri yanıttaki alanı içerir.

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

Dört sorgu da eşdeğerdir ve sunucu yanıtına "konum" ve "satış" alanlarının eklenmesini belirtir.

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

Yanıtta belirli bir alanı veya birden çok alanı dışlama

Sıfır tamsayı değeri veya false boole değeri, belirtilen alanı sorgu yanıtından dışlar.

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

Her iki sorgu da eşdeğerdir ve aşağıdaki yanıtı döndürür:

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

Uyarı

Varsayılan olarak, _id alanı sunucu yanıtına eklenir. Projeksiyon belgesi hem ekleme hem de dışlama yan tümceleri içeremez. Ancak, _id alanı bu kuralın tek özel durumudur ve dahil edilecek alanların listesiyle birlikte dışlanabilir ve tam tersi de olabilir.

Sorgu filtresi ölçütleri ile eşleşen bir dizideki ilk öğeyi yansıtma

"arrayFieldName".$ komutu, belirtilen sorgu filtreleri ile eşleşen bir dizideki bir nesnenin yalnızca ilk oluşumunu yansıtır.

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

Döndürülen belgelerden biri, dizideki diğer tüm öğeleri dışlarken yalnızca promotionEvents dizisindeki "Grand Bargain Gala" olay adına sahip ilk öğeyi gösterir.

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

Sorgu filtresi ölçütleri ile eşleşen bir dizideki belirli öğeleri yansıtma

Bu sorgu, promotionEvents dizisi içindeki eventName özelliğini ve iç içe Year özelliğini projeler.

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

Döndürülen belgelerden biri yanıtta yansıtılan belirtilen dizi öğelerini gösterir.

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