Uit hun officiële documentatie zelf of- versus-in :
Als je documenten hebt zoals hieronder:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
Als u documenten wilt ontvangen waar price
is gelijk aan 100
of 500
, zoekopdracht als :
db.collection.find({ price: { $in: [ 100, 500 ] } })
Door te doen zoals hierboven, is de query eenvoudig en schoon. Je kunt ook $or
. gebruiken in plaats van $in
maar waarom zou u de steno-notatie verliezen en proberen uw zoekopdracht er omvangrijk uit te laten zien door steeds weer meer objecten van hetzelfde veld toe te voegen?
Standaard als je logische OR
. wilt doen op twee verschillende operators zou je $or
. gebruiken , Maar wanneer gebruik je $or
op hetzelfde veld :
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
Zoals hierboven, wanneer je meerdere verschillende voorwaarden hebt om op hetzelfde veld te matchen, gebruik je het.
Deze twee zoekopdrachten leveren hetzelfde resultaat op wanneer ze worden uitgevoerd, maar wanneer u $in
. gebruikt - als invoerwaarden rechte getallen zijn of tekenreeksen of andere typen kunnen zijn waarbij invoerwaarden exact overeenkomen met waarden van price
veld in docs, maar wanneer u $or
. gebruikt je controleert op verschillende voorwaarden op hetzelfde veld.
Test : mongoplayground