Este capítulo introduce los operadores lógicos de MongoDB, similares a las condiciones "and" y "or" en SQL.
Operadores lógicos admitidos por MongoDB
Operador | Descripción |
---|---|
$and | Encuentra documentos que satisfacen todas las condiciones especificadas, similar a la condición "and" en SQL |
$not | Realiza la operación lógica NOT en la expresión especificada |
$or | Encuentra documentos que satisfacen al menos una de las condiciones especificadas, similar a la condición "or" en SQL |
$nor | Encuentra documentos que no cumplen con ambas condiciones especificadas |
$and
Sintaxis:
{ $and: [ { <expresión1> }, { <expresión2> }, ... , { <expresiónN> } ] }
Explicación:
- <expresión> es una sub-expresión
- $and toma un array que contiene un grupo de sub-expresiones, y todas las sub-expresiones deben ser cumplidas
Ejemplo:
db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )
SQL equivalente:
select * from inventario where qty > 50 and qty < 10
$not
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Explicación:
- Si la condición es price > 1.99, entonces la operación NOT sería price <= 1.99.
- Esto significa buscar documentos donde el price sea menor o igual a 1.99 o donde el campo price no exista.
Similar a SQL:
select * from inventario where price <= 1.99
$or
Similar a la condición "or" en SQL Sintaxis:
{ $or: [ { <expresión1> }, { <expresión2> }, ... , { <expresiónN> } ] }
Explicación:
- <expresión> es una sub-expresión
- $or toma un array que contiene un grupo de sub-expresiones, y al menos una sub-expresión debe ser cumplida
Ejemplo:
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
SQL equivalente:
select * from inventario where quantity < 20 or price=10
$nor
Operación NOR lógica Sintaxis:
{ $nor: [ { <expresión1> }, { <expresión2> }, ... , { <expresiónN> } ] }
Ejemplo:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
Explicación:
- price != 1.99 y sale != true, o
- price != 1.99 y el campo sale no está presente, o
- el campo price no está presente y sale != true