sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan $in och $ eller ersätta varandra i MongoDB?

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




  1. Minska poäng i Redis eller ta bort om 0

  2. Meteor Frågar andra användare via e-post

  3. Datumjämförelse i mongodb

  4. ValueError:<För många värden att packa upp>