Cuando empiezas a construir consultas en MongoDB necesitas formas precisas de filtrar documentos por igualdad o diferencia. Los operadores eq (equal) y ne (not equal) son los primeros comparison query operators que debes dominar para hacer búsquedas exactas y exclusiones dentro de una colección.
¿Qué son los comparison query operators en MongoDB?
Son operadores que MongoDB usa para comparar valores dentro de una consulta. El operador eq evalúa igualdad estricta y ne devuelve todo lo que no coincida con un valor dado. Ambos viven dentro del objeto de filtro que pasas a métodos como find o updateMany.
¿Qué hace el operador eq en MongoDB? Filtra documentos cuyo campo sea exactamente igual al valor indicado. Viene implícito en consultas simples, así que puedes usarlo sin escribirlo de forma explícita.
¿Cómo se usa eq de forma implícita y explícita?
El uso implícito aparece en cualquier consulta básica. Por ejemplo, buscar productos con cantidad igual a 20 en la colección inventory de la base de datos Platzi Store se ve así:
javascript
use('platzi-store')
db.inventory.find({ quantity: 20 })
Esa consulta ya está aplicando un equal. La versión explícita produce el mismo resultado:
javascript
db.inventory.find({ quantity: { $eq: 20 } })
Las dos formas devuelven los mismos documentos. La diferencia es solo de estilo y legibilidad cuando combinas varios operadores en una misma consulta.
¿Cómo consultar subdocumentos con dot notation?
Cuando un documento contiene un subdocumento con campos como item.name o item.code, debes acceder a ellos usando notación de punto y encerrando la clave entre comillas dobles. Es la única forma de que MongoDB interprete la ruta correctamente.
javascript
db.inventory.find({ "item.name": "ab" })
db.inventory.find({ "item.code": "123" })
La primera consulta devuelve un único documento, porque solo uno tiene item.name igual a ab. La segunda devuelve dos, porque hay dos documentos con item.code igual a 123. Aquí también puedes pasar a la forma explícita con $eq y obtener exactamente el mismo resultado.
¿Necesito comillas dobles para consultar subdocumentos? Sí. Cuando usas dot notation como item.name, debes encerrar la clave en comillas porque incluye un punto. Sin comillas, la sintaxis falla.
¿Cuándo usar el operador ne en MongoDB?
El operador ne funciona como el contrario de eq y, a diferencia de su par, no viene implícito. Siempre debes escribirlo de forma explícita dentro del objeto de filtro.
javascript
db.inventory.find({ quantity: { $ne: 20 } })
Esa consulta excluye todos los documentos cuya cantidad sea 20 y devuelve el resto, por ejemplo los que tienen 15, 25 o 30 unidades. Es la forma directa de pedirle a MongoDB todo lo que no cumpla una condición exacta.
¿Cómo combinar ne con updateMany para actualizaciones masivas?
Los operadores de consulta no se limitan al find. También funcionan dentro de updateMany, donde el primer argumento es el filtro y el segundo es la operación de actualización. Un caso útil es incrementar la cantidad de todos los productos que no tengan quantity igual a 20:
javascript
db.inventory.updateMany(
{ quantity: { $ne: 20 } },
{ $inc: { quantity: 10 } }
)
En esta instrucción ocurren dos cosas al mismo tiempo:
- El filtro usa
$ne como query operator para seleccionar los documentos objetivo.
- La actualización usa
$inc como update operator para sumar 10 al campo quantity.
Al ejecutarla sobre el dataset de ejemplo, MongoDB modifica tres documentos. Si antes había productos con cantidad 15, 25 y 30, después del update pasan a 25, 35 y 40. Los que tenían 20 quedan intactos porque no pasan el filtro.
¿Cuál es la diferencia entre query operators y update operators?
Aunque conviven en la misma instrucción, cumplen funciones distintas. Tenerlo claro evita confusiones cuando escribes consultas más complejas.
- Los query operators como
$eq y $ne filtran qué documentos serán afectados.
- Los update operators como
$inc definen qué cambio se aplica sobre esos documentos.
- Ambos pueden aparecer juntos en métodos como
updateMany, updateOne o findOneAndUpdate.
Entender esa separación te permite construir operaciones quirúrgicas: seleccionas con precisión y modificas con intención.
Habilidades y conceptos clave de la clase
Para cerrar el panorama, vale la pena nombrar lo que estuviste practicando y dónde aparece dentro de la clase.
- Comparison query operators: familia de operadores de comparación en MongoDB [0:10].
- Operador $eq implícito y explícito: igualdad estricta sobre un campo [2:05].
- Consultas a subdocumentos con dot notation: acceso a
item.name e item.code usando comillas dobles [2:55].
- Operador $ne: filtro por diferencia, siempre explícito [4:25].
- updateMany con $inc: actualización masiva combinando filtro y operador de incremento [5:10].
- Dataset de inventario en Platzi Store: colección
inventory con campos quantity y subdocumento item [0:35].
¿Cómo estás aplicando $eq y $ne en tus propias consultas? Comparte en los comentarios un caso donde te haya tocado filtrar por subdocumentos.