От самата им официална документация или- срещу в :
Ако имате документи като по-долу:
[
{
"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