Consulta con múltiples condiciones en MongoDB
-
Operador
$oren MongoDB -
Encuentre múltiples condiciones usando el operador
$or -
Operador
$yen MongoDB -
Encuentre múltiples condiciones usando el operador
$and
Este artículo le enseñará cómo consultar con múltiples condiciones usando múltiples documentos en MongoDB. Los operadores $and y $or se explican brevemente con ejemplos de cada uno.
MongoDB proporciona al usuario diferentes operadores lógicos de consulta, los operadores $o y $y son uno. Pero primero, echemos un vistazo a la tabla de contenido de este artículo.
- Operador
$o - Encuentra múltiples condiciones usando el operador
$or - Operador
$y - Encuentra múltiples condiciones usando el operador
$and
Operador $or en MongoDB
De acuerdo con los requisitos, puede usar este operador en métodos como buscar(), actualizar(), etc.
- También puede utilizar este operador con consultas de texto, consultas
Geoespacialesy operaciones de clasificación. - Cuando MongoDB evalúa las cláusulas en la expresión
$or, realiza un escaneo de colección. O bien, si los índices admiten todas las cláusulas de la expresión$or, entonces MongoDB realiza exploraciones de índice. - También puede anidar la operación
$or.
Al ejecutar una operación lógica OR en una matriz de dos o más expresiones, el operador OR selecciona documentos que satisfacen al menos una de las expresiones. El operador $or tiene la siguiente sintaxis.
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
Considere el siguiente ejemplo.
db.inventory.find( { $or: [ { quantity: { $lt: 51 } }, { price: 20 } ] } )
En esta consulta, se devolverán todos los documentos de la colección de inventario con un valor de campo cantidad inferior a 51 o el valor de campo precio inferior a 20.
Analicemos primero el comportamiento del operador o en MongoDB.
Cláusulas e índices para el operador $or
Al evaluar todas las cláusulas en la expresión $or, MongoDB realiza un escaneo de colección o un escaneo de índice. MongoDB ejecuta exploraciones de índice si los índices admiten todas las cláusulas.
Como resultado, para que MongoDB analice la declaración, todas las cláusulas en la expresión $or deben estar respaldadas por índices. Si este no es el caso, MongoDB realizará un análisis de la colección.
Cada cláusula de la consulta $or puede utilizar su índice cuando se emplean índices con consultas $or. Mira el siguiente ejemplo a continuación.
db.inventory.find( { $or: [ { quantity: { $lt: 51 } }, { price: 20 } ] } )
En lugar de un índice compuesto, establecería un índice para la cantidad y otro para el precio para manejar esta consulta.
db.inventory.createIndex( { quantity: 1 } )
db.inventory.createIndex( { price: 1 } )
Para habilitar las cláusulas $or, MongoDB puede usar cualquier índice excepto el índice geoHaystack.
Consultas text y el operador $or
Si $o incluye una consulta $texto, un índice debe admitir todas las cláusulas de la matriz $o. Como resultado, una consulta $texto debe usar un índice, y una consulta $o solo puede usar los índices si se admiten todas sus cláusulas.
Si la consulta $texto no utiliza un índice, la consulta devolverá un error.
Consultas GeoSpatial y el operador $or
$or permite cláusulas geográficas, excepto la cláusula near (que incluye $nearSphere y $near). No puede haber una cláusula relativa en $or con otra cláusula.
Operaciones de clasificación y el operador $or
Al realizar consultas $or con sort(), MongoDB ahora puede utilizar índices que admitan las cláusulas $or. En versiones anteriores de MongoDB, los índices no se usaban.
$o VS $en
Utilice el operador $in en lugar del operador $or con expresiones que son pruebas de igualdad para el valor del mismo campo.
Utilice el operador $in, por ejemplo, para elegir todos los documentos de la colección inventario donde el valor del campo cantidad sea 40 o 1000.
db.inventory.find ( { quantity: { $in: [40, 1000] } } )
Encuentre múltiples condiciones usando el operador $or
El operador o en MongoDB se usa para seleccionar o recuperar solo documentos que coincidan con al menos una de las frases proporcionadas.
- También puede usar este operador en un método como
buscar(),actualizar(), etc., según los requisitos. - También puede usar este operador con consultas de texto y operaciones de clasificación.
- También puede anidar la operación
$or.
Vamos a por un ejemplo para entender el funcionamiento del operador $or.
Ejemplo:
Vamos a crear una colección que contenga los siguientes documentos.
db={
"students": [
{
id: 1,
name: "Ali",
Age: 24,
language: "JavaScript",
status: "inactive",
score: 82
},
{
id: 2,
name: "Haris",
Age: 35,
language: "Python",
status: "inactive",
score: 87
},
{
id: 3,
team: "Hamza",
Age: 27,
status: "active",
language: "Python",
score: 84
}
]
}
Muestra todos los documentos de una colección utilizando el método find().
db.students.find();
La siguiente es la consulta de MongoDB con el operador $or.
db.students.find({
$or: [
{
Age: {
$lte: 24
}
},
{
score: {
$lt: 80
}
},
{
status: "Inactive"
}
]
})
Esto producirá la siguiente salida.

Operador $y en MongoDB
$and realiza una operación lógica AND en una matriz de una o más expresiones (expression1>, expression2>, etc.) y selecciona los documentos que satisfacen todas las expresiones.
Comportamiento:
$and maneja los errores de la siguiente manera para ayudar al motor de consultas a mejorar las consultas.
- Si cualquier expresión proporcionada a
$anddaría lugar a un error si se evaluara sola, el$andque contiene la expresión puede dar lugar a un error, aunque esto no está garantizado. - Una expresión proporcionada después de la primera expresión proporcionada a
$ypuede causar un error incluso si la primera expresión se evalúa comofalsa.
Sintaxis:
La sintaxis utilizada cuando se utiliza el operador y es la siguiente.
{ $and: [{ <expression1> },{ <expression2> }, ... ,{ <expressionN> }] }
Por ejemplo, la siguiente consulta siempre producirá un error si $x es 0.
db.example.find( {
$expr: { $eq: [ { $divide: [ 1, "$x" ] }, 3 ] }
} )
La siguiente consulta, que contiene múltiples expresiones proporcionadas a $and, puede generar un error si hay algún documento donde $x es 0.
db.example.find( {
$and: [
{ x: { $ne: 0 } },
{ $expr: { $eq: [ { $divide: [ 1, "$x" ] }, 3 ] } }
]
} )
Encuentre múltiples condiciones usando el operador $and
Puede utilizar el operador $and en MongoDB para aplicar varios criterios. Primero, elegiremos todos los artículos que cumplan con todas las frases de condición utilizando la operación $and.
- Puede usar este operador en métodos como
buscar(),actualizar(), etc., según el requisito. - También puede usar este operador con consultas de texto y operaciones de clasificación.
Entonces, entendámoslo con la ayuda de un ejemplo.
Los siguientes registros se insertan en la colección estudiantes.
db={
"students": [
{
id: 1,
name: "Ali",
Age: 24,
language: "JavaScript",
status: "inactive",
score: 82
},
{
id: 2,
name: "Haris",
Age: 35,
language: "Python",
status: "inactive",
score: 87
},
{
id: 3,
team: "Hamza",
Age: 27,
status: "active",
language: "Python",
score: 84
}
]
}
Ahora, aplica múltiples condiciones usando el operador $and y encuentra los documentos.
db.students.find({
$and: [
{
"language": "Python"
},
{
"Age": 35
}
]
})
Aquí se aplica la operación $and para encontrar aquellos documentos donde idioma es Python, y Edad es 35.
Vea el funcionamiento del código anterior en MongoDB en esta captura de pantalla.

Obtuvo el resultado con éxito según la condición dada. Luego, puede usar el operador $and y recuperar los documentos según la condición.
En este artículo, se explica en detalle la consulta con múltiples condiciones usando múltiples documentos en MongoDB usando el operador $and y $or.