MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

$in et $or peuvent-ils se remplacer dans MongoDB ?

De leur documentation officielle elle-même ou- contre-dans :

Si vous avez des docs comme ci-dessous :

[
  {
    "price": 100
  },
  {
    "price": 200
  },
  {
    "price": 300
  },
  {
    "price": 400
  },
  {
    "price": 500
  }
]

Si vous vouliez obtenir des documents où price est égal à 100 ou 500 , requête comme :

db.collection.find({ price: { $in: [ 100, 500 ] } })

En faisant comme ci-dessus, la requête est simple et propre. Vous pouvez également utiliser $or au lieu de $in mais pourquoi perdriez-vous la notation abrégée et essayeriez-vous de donner l'impression que votre requête est volumineuse en ajoutant encore et encore des objets du même champ ?

Par défaut si vous vouliez faire un OR logique sur deux opérateurs différents, vous utiliseriez $or , Mais quand utiliser $or sur le même champ :

db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })

Comme ci-dessus, lorsque vous avez plusieurs conditions différentes à faire correspondre sur le même champ, vous l'utiliserez.

Ces deux requêtes donnent le même résultat lorsqu'elles sont exécutées mais lorsque vous utilisez $in - si les valeurs d'entrée sont des nombres droits ou peuvent être des chaînes ou d'autres types où les valeurs d'entrée correspondent exactement aux valeurs de price champ dans les documents, mais lorsque vous utilisez $or vous recherchez différentes conditions sur le même champ.

Tester : mongoplayground