MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy $in i $lub mogą się wzajemnie zastępować w MongoDB?

Z samej oficjalnej dokumentacji lub- przeciw-w :

Jeśli masz dokumenty takie jak poniżej:

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

Jeśli chcesz uzyskać dokumenty, w których price jest równe 100 lub 500 , zapytanie takie jak :

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

Robiąc tak jak powyżej, zapytanie jest proste i czyste. Możesz także użyć $or zamiast $in ale po co tracić notację skróconą i starać się, aby zapytanie wyglądało na nieporęczne, dodając więcej obiektów tego samego pola raz za razem?

Domyślnie, jeśli chcesz wykonać logiczne OR na dwóch różnych operatorach użyjesz $or , Ale kiedy używać $or na tym samym polu :

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

Tak jak powyżej, gdy masz wiele różnych warunków do dopasowania na tym samym polu, użyjesz go.

Te dwa zapytania dają ten sam wynik po wykonaniu, ale gdy używasz $in - czy wartości wejściowe są liczbami prostymi lub mogą być ciągami lub innymi typami, w których wartości wejściowe będą dokładnie odpowiadać wartościom price pole w dokumentach, ale gdy używasz $or sprawdzasz różne warunki na tym samym polu.

Test: mongoplayground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Liczba Mongodb różni się z wieloma polami grupowymi

  2. Uruchamianie db.repairDatabase() z mongodb-native w node.js

  3. zapytanie mongodb vs mysql

  4. Jaka jest różnica między toGMTstring() a toUTCstring()?

  5. MongoDb — wykorzystanie serwera z wieloma procesorami do aplikacji o dużym obciążeniu zapisu