Compartir a través de


$eq

El $eq operador se usa para buscar coincidencias con documentos en los que el valor de un campo es igual a un valor especificado. El operador $eq filtra los documentos en función de coincidencias exactas en predicados de consulta para recuperar documentos con valores, objetos y matrices específicos.

Syntax

{
    field: {
        $eq: <value>
    }
}

Parámetros

Parámetro Description
field Campo que se va a comparar
value El valor con el que comparar

Examples

Considere este documento de ejemplo de la colección de tiendas.

{
    "_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: Usar $eq filtro en un campo de nivel raíz

Para encontrar una tienda con el nombre "Boulder Innovations | Lugar de seguridad principal: Ankundingburgh", ejecute una consulta con el predicado $eq para que coincida en el campo de nombre y proyecta solo los campos id. y nombre en el resultado.

db.stores.find({
    name: {
        $eq: "Boulder Innovations | Home Security Place - Ankundingburgh"
    }
}, {
    name: 1
})

Esta consulta devuelve el siguiente resultado:

[
    {
        "_id": "bda56164-954d-4f47-a230-ecf64b317b43",
        "name": "Boulder Innovations | Home Security Place - Ankundingburgh"
    }
]

Ejemplo 2: Usar $eq filtro en un campo anidado

Para buscar un almacén con un total de ventas exactamente de 37 015 USD, ejecute una consulta con el operador de $eq mediante la notación de puntos en el campo anidado sales.totalSales.

db.stores.find({
    "sales.totalSales": {
        $eq: 37015
    }
}, {
    name: 1,
    "sales.totalSales": 1
})

Esto devuelve el siguiente resultado:

[
    {
        "_id": "bda56164-954d-4f47-a230-ecf64b317b43",
        "name": "Boulder Innovations | Home Security Place - Ankundingburgh",
        "sales": { "totalSales": 37015 }
    }
]

Ejemplo 3: Uso de $eq para elementos individuales de una matriz

La consulta siguiente recupera documentos mediante predicados de igualdad en elementos individuales dentro de la matriz promotionEvents.discounts anidada.

Esta consulta busca una coincidencia de igualdad en cualquiera de los objetos de la matriz de descuentos anidada.

db.stores.find({
    "promotionEvents.discounts": {
        $eq: {
            categoryName: "Alarm Systems",
            discountPercentage: 5
        }
    }
}, {
    name: 1
}, {
    limit: 2
})

Esta consulta devuelve los siguientes resultados:

[
  {
    "_id": "ece5bf6c-3255-477e-bf2c-d577c82d6995",
    "name": "Proseware, Inc. | Home Security Boutique - Schambergertown"
  },
  {
    "_id": "7baa8fd8-113a-4b10-a7b9-2c116e976491",
    "name": "Tailwind Traders | Home Security Pantry - Port Casper"
  }
]

Ejemplo 4: Usar $eq para que coincida con toda la matriz

Esta consulta busca documentos en función de la coincidencia exacta en TODOS los valores de la matriz promotionEvents.discounts.

db.stores.find({
    "promotionEvents.discounts": {
        $eq: [{
            categoryName: "Alarm Systems",
            discountPercentage: 5
        }, {
            categoryName: "Door Locks",
            discountPercentage: 12
        }]
    }
}, {
    name: 1
})

Esta consulta devuelve el siguiente resultado:

[
    {
        "_id": "aa9ad64c-29da-42f8-a1f0-30e03bf04a2d",
        "name": "Boulder Innovations | Home Security Market - East Sheridanborough"
    }
]

Nota:

Para una coincidencia de igualdad en una matriz completa, el orden de los valores especificados en los predicados de igualdad también debe ser una coincidencia exacta.