sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Pueden $in y $or reemplazarse entre sí en MongoDB?

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.

Prueba: mongoplayground