MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

$in e $ possono sostituirsi a vicenda in MongoDB?

Dalla loro stessa documentazione ufficiale o- contro-in :

Se hai documenti come di seguito:

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

Se desideri ottenere documenti in cui price è uguale a 100 o 500 , interroga come :

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

Facendo come sopra, la query è semplice e pulita. Puoi anche usare $or invece di $in ma perché dovresti perdere la notazione abbreviata e provare a rendere la tua query ingombrante aggiungendo più oggetti dello stesso campo ancora e ancora?

Per impostazione predefinita, se si desidera eseguire OR logico su due diversi operatori useresti $or , Ma quando usare $or sullo stesso campo :

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

Come sopra, quando hai più condizioni diverse da abbinare sullo stesso campo, lo utilizzerai.

Queste due query producono lo stesso risultato quando vengono eseguite ma quando usi $in - se i valori di input sono numeri semplici o possono essere stringhe o altri tipi in cui i valori di input corrisponderanno esattamente ai valori di price campo in documenti, ma quando usi $or stai verificando condizioni diverse sullo stesso campo.

Test : mongoplayground