Docs Menu
Docs Home
/ /
Consulta de comparación

$eq

$eq

Especifica la condición de igualdad. El operador $eq coincide con documentos donde el valor de un campo sea igual al valor especificado.

Puedes usar $eq para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El operador $eq tiene la siguiente forma:

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

Especificar el operador $eq es equivalente a usar la forma { field: <value> } salvo cuando el <value> es una expresión regular. Consulte a continuación ejemplos.

Para la comparación de diferentes valores de tipo BSON, consulta el orden de comparación especificado de BSON.

Si el <value> especificado es un documento, el orden de los campos en el documento es importante.

Si el <value> especificado es un arreglo, MongoDB hace coincidir documentos donde el <field> coincide exactamente con el arreglo o el <field> contiene un elemento que coincide exactamente con el arreglo. El orden de los elementos es importante. Para un ejemplo, consulte Igualar un valor de arreglo.

La expresión { field: <value> } especifica implícitamente una coincidencia en <value>. MongoDB traduce la coincidencia implícita a una forma más explícita.

Cuando el <value> está fijo, como una string concreta, la expresión es equivalente a usar el operador $eq { field: { $eq: <value> } }.

Si <value> es una expresión regular, la instrucción se expande utilizando el operador $regex { field: { $regex: <value> } }.

Para ver ejemplos que ilustran este comportamiento, se debe consultar Comportamiento de coincidencia de Regex.

Utiliza siempre la forma explícita { field: { $eq: <value> } } con la entrada proporcionada por el usuario para evitar problemas con queries formadas de manera maliciosa.

Los siguientes ejemplos ejecutan una query contra la colección inventory con los siguientes documentos:

db.inventory.insertMany( [
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
] )

El siguiente ejemplo realiza una query a la colección inventory para seleccionar todos los documentos en los que el valor del campo qty es igual a 20:

db.inventory.find( { qty: { $eq: 20 } } )

La query es equivalente a:

db.inventory.find( { qty: 20 } )

Ambas queries coinciden con los siguientes documentos:

[
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

El siguiente ejemplo consulta la colección inventory para seleccionar todos los documentos donde el valor del campo name en el documento item sea igual a "ab". Para especificar una condición en un campo de un documento incrustado, utiliza la notación de puntos.

db.inventory.find( { "item.name": { $eq: "ab" } } )

La query es equivalente a:

db.inventory.find( { "item.name": "ab" } )

Ambas queries coinciden con el siguiente documento:

[ { _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] } ]

Tip

El siguiente ejemplo queries la colección inventory para seleccionar todos los documentos donde el arreglo tags contiene un elemento con el valor "B" [1]:

db.inventory.find( { tags: { $eq: "B" } } )

La query es equivalente a:

db.inventory.find( { tags: "B" } )

Ambas queries coinciden con los siguientes documentos:

[
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
]
[1] La query también coincidirá con documentos donde el valor del campo tags es la string "B".

El siguiente ejemplo consulta la colección inventory para seleccionar todos los documentos donde el arreglo tags sea exactamente igual al arreglo especificado o donde el arreglo tags contenga un elemento que sea igual al arreglo [ "A", "B" ].

db.inventory.find( { tags: { $eq: [ "A", "B" ] } } )

La query es equivalente a:

db.inventory.find( { tags: [ "A", "B" ] } )

Ambas queries coinciden con los siguientes documentos:

[
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
]

Los siguientes ejemplos demuestran las diferencias de comportamiento entre la coincidencia implícita y explícita de expresiones regulares. Considere una colección con estos documentos:

db.companies.insertMany( [
{ _id: 001, company: "MongoDB" },
{ _id: 002, company: "MongoDB2" }
] )
coincidencia de $eq en una string

Un string se expande para devolver los mismos valores, ya sea por una coincidencia implícita o un uso explícito de $eq. Ambas de estas consultas:

db.collection.find( { company: "MongoDB" }, {_id: 0 })
db.collection.find( { company: { $eq: "MongoDB" } }, {_id: 0 } )

devuelve el siguiente resultado:

[ { company: "MongoDB" } ]
coincidencia de $eq en una expresión regular

Una query explícita que utilice $eq y una expresión regular solo coincidirá con un objeto que también sea una expresión regular. La query de ejemplo no devolverá nada, ya que los valores del campo company son cadenas de texto.

db.companies.find( { company: { $eq: /MongoDB/ } }, {_id: 0 } )
Coincidencias de expresiones regulares

Una query con una coincidencia implícita con una expresión regular es equivalente a realizar una query con el operador $regex. Ambas de estas consultas:

db.companies.find( { company: /MongoDB/ }, {_id: 0 })
db.companies.find( { company: { $regex: /MongoDB/ } }, {_id: 0 } )

devuelven los mismos resultados:

[
{ company: "MongoDB" },
{ company: "MongoDB2" }
]

Volver

Consulta de comparación

En esta página