De su propia documentación oficial o- versus adentro :
Si tiene documentos como los siguientes:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
Si desea obtener documentos donde price
es igual a 100
o 500
, consulta como:
db.collection.find({ price: { $in: [ 100, 500 ] } })
Al hacer lo anterior, la consulta es simple y limpia. También puedes usar $or
en lugar de $in
pero, ¿por qué perdería la notación abreviada e intentaría que su consulta pareciera voluminosa agregando más objetos del mismo campo una y otra vez?
De forma predeterminada, si desea hacer OR
lógico en dos operadores diferentes usaría $or
, pero cuándo usar $or
en el mismo campo:
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
Como arriba, cuando tiene múltiples condiciones diferentes para hacer coincidir en el mismo campo, lo usará.
Estas dos consultas arrojan el mismo resultado cuando se ejecutan pero cuando usa $in
- si los valores de entrada son números directos o pueden ser cadenas u otros tipos donde los valores de entrada coincidirán exactamente con los valores de price
campo en documentos, pero cuando usa $or
está comprobando diferentes condiciones en el mismo campo.