Compartir a través de


$eq (consulta de comparación)

SE APLICA A: núcleo virtual de MongoDB

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

Sintaxis

La sintaxis del $eq operador es:

{ "field": { "$eq": "value" } }

Parámetros

Parámetro Descripción
field Campo que se va a comparar
value El valor con el que comparar

Ejemplos

Ten en cuenta 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: Buscar documentos basados en una coincidencia de igualdad en el valor de un campo de nivel raíz

Para encontrar una tienda con el nombre "Boulder Innovations | Home Security Place - Ankundingburgh":

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

Esto devuelve los siguientes resultados:

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

Ejemplo 2: Buscar documentos basándose en una coincidencia de igualdad en el valor de un campo anidado

Para buscar tiendas en las que el importe total de ventas es exactamente $37.015:

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

Esto devuelve los siguientes resultados:

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

Ejemplo 3: Buscar documentos basados en una coincidencia de igualdad en cualquier elemento individual dentro de una matriz

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

Esto 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: Buscar documentos basados en una igualdad en toda la matriz

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

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

Esto devuelve los siguientes resultados:

{
    "_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.