Compartir a través de


encontrar

El find comando de Azure Cosmos DB para MongoDB (núcleo virtual) se usa para consultar documentos dentro de una colección. Este comando es fundamental para las operaciones de recuperación de datos y se puede personalizar con filtros, proyecciones y opciones de consulta para ajustar los resultados.

Sintaxis

La sintaxis básica del find comando es:

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

Parámetros

Parámetro Descripción
query Documento que especifica los criterios para recuperar los documentos que se van a recuperar.
projection (Opcional) Documento que especifica los campos de los documentos coincidentes que se van a devolver en el conjunto de resultados.
options (Opcional) Documento que especifica opciones para el comportamiento y los resultados de la consulta

Ejemplos

Considere este documento de ejemplo de la colección stores en la base de datos 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
                }
            ]
        }
    ]
}

Ejemplo 1: Recuperar todos los documentos

El comando find() sin ningún filtro de consulta devuelve todos los documentos de la colección.

db.stores.find()

Ejemplo 2: Recuperación de documentos con filtros de consulta

Recupere documentos mediante un filtro en la propiedad name.

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

Ejemplo 3: Recuperación de documentos con filtros de consulta en objetos

Recupere documentos mediante filtros de consulta en los campos lat y lon dentro del objeto location.

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

Cuando la notación dot (.) no se usa para hacer referencia a campos dentro de un objeto, el filtro de consulta debe coincidir exactamente con el objeto completo, incluido el orden de los campos.

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

Ejemplo 4: Recuperación de documentos con filtros de consulta en matrices

Recupere documentos de la matriz promotionEvents donde eventName es "Grand Gang Gala".

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

Recupere documentos de la matriz "descuentos", que está anidada dentro de la matriz promotionEvents donde categoryName es "Area Rugs".

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

Proyecciones

El segundo documento del comando find especifica la lista de campos que se van a proyectar en la respuesta.

Incluir un campo específico o varios campos en la respuesta

Un valor entero distinto de cero o un valor booleano de true incluye el campo en la respuesta.

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

Las cuatro consultas son equivalentes y especifican la inclusión de los campos "location" y "sales" en la respuesta del servidor.

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

Excluir un campo específico o varios campos en la respuesta

Un valor entero de cero o un valor booleano de false excluye el campo especificado de la respuesta de consulta.

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

Ambas consultas son equivalentes y devuelven la siguiente respuesta:

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

Nota:

De forma predeterminada, el campo _id se incluye en la respuesta del servidor. El documento de proyección no puede contener cláusulas de inclusión y exclusión. Sin embargo, el campo _id es la única excepción a esta regla y se puede excluir junto con una lista de campos que se van a incluir y viceversa.

Proyectar el primer elemento de una matriz que coincida con los criterios de filtro de consulta

El comando "arrayFieldName".$ solo proyecta la primera aparición de un objeto en una matriz que coincide con los filtros de consulta especificados.

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

Uno de los documentos devueltos muestra solo el primer elemento de la matriz promotionEvents que tiene el nombre de evento "Grand Gang Gala" al excluir todos los demás elementos de la matriz.

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

Elementos específicos del proyecto de una matriz que coinciden con los criterios de filtro de consulta

Esta consulta proyecta la propiedad eventName y la propiedad Year anidada dentro de la matriz promotionEvents.

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

Uno de los documentos devueltos muestra los elementos de matriz especificados proyectados en la respuesta.

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