MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Могат ли $in и $or да се заменят взаимно в MongoDB?

От самата им официална документация или- срещу в :

Ако имате документи като по-долу:

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

Ако искате да получите документи, където price е равно на 100 или 500 , заявка като:

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

Като правите както по-горе, заявката е проста и чиста. Можете също да използвате $or вместо $in но защо бихте загубили стенограмата и се опитали да направите заявката си да изглежда обемиста, като добавяте повече обекти от едно и също поле отново и отново?

По подразбиране, ако искате да направите логическо OR на два различни оператора бихте използвали $or , но кога да използвате $or на същото поле :

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

Както по-горе, когато имате множество различни условия за съвпадение в едно и също поле, ще го използвате.

Тези две заявки дават един и същ резултат, когато се изпълнят, но когато използвате $in - ако входните стойности са прави числа или могат да бъдат низове или други типове, където входните стойности ще съвпадат точно със стойностите на price поле в документи, но когато използвате $or проверявате за различни условия в едно и също поле.

Тест: mongoplayground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да инсталирате Mongodb на Apple M1 чип

  2. Spring Data Mongo не може да намери PersistentEntity за Enum

  3. Mongodb:Неподдържано преобразуване от масив в objectId в $convert без стойност onError

  4. Как да се свържете с mongodb с помощта на sailsjs v0.10?

  5. Не може да се изгради проект с помощта на mongodb c++ драйвер с MSVC