sql >> Database teknologi >  >> NoSQL >> MongoDB

Kan $in og $ eller erstatte hinanden i MongoDB?

Fra selve deres officielle dokumentation eller- versus-in :

Hvis du har dokumenter som nedenfor :

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

Hvis du ønskede at få dokumenter hvor price er lig med 100 eller 500 , forespørgsel som :

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

Ved at gøre som ovenfor er forespørgslen enkel og ren. Du kan også bruge $or i stedet for $in men hvorfor ville du miste stenografi og prøve at få din forespørgsel til at se omfangsrig ud ved at tilføje flere objekter af samme felt igen og igen?

Som standard, hvis du ville gøre logisk OR på to forskellige operatorer ville du bruge $or , Men hvornår skal du bruge $or på samme felt :

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

Som ovenfor, når du har flere forskellige betingelser, der skal matches på samme felt, vil du bruge det.

Disse to forespørgsler giver samme resultat, når de udføres, men når du bruger $in - hvis inputværdier er lige tal eller kan være strenge eller andre typer, hvor inputværdier vil matche nøjagtigt med værdier for price felt i docs, men når du bruger $or du tjekker for forskellige forhold på samme felt.

Test: mongoplayground




  1. Konfiguration af MongoDB på Windows

  2. Hvordan bruger man updateOption med arrayFilters i spring-data mongodb?

  3. MongoError:kan ikke lave forespørgsler på admin i atlas

  4. Hvilken skal være singleton i én applikation? MongoClient eller MongoDatabase eller MongoCollection?