Från själva deras officiella dokumentation eller- mot in :
Om du har dokument som nedan:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
Om du ville få dokument där price
är lika med 100
eller 500
, fråga som :
db.collection.find({ price: { $in: [ 100, 500 ] } })
Genom att göra som ovan är frågan enkel och ren. Du kan också använda $or
istället för $in
men varför skulle du tappa stenografi och försöka få din fråga att se skrymmande ut genom att lägga till fler objekt i samma fält om och om igen?
Som standard om du ville göra logisk OR
på två olika operatorer skulle du använda $or
, Men när ska $or
användas på samma fält :
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
Som ovan när du har flera olika villkor att matcha på samma fält kommer du att använda det.
Dessa två frågor ger samma resultat när de körs men när du använder $in
- om ingångsvärden är raka tal eller kan vara strängar eller andra typer där ingångsvärden exakt matchar värdena för price
fältet i dokument, men när du använder $or
du letar efter olika förhållanden på samma fält.
Test : mongoplayground