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