MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

$ In và $ hoặc có thể thay thế nhau trong MongoDB không?

Từ tài liệu chính thức của họ, hoặc- so với trong :

Nếu bạn có những tài liệu như bên dưới:

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

Nếu bạn muốn nhận tài liệu ở đâu price bằng 100 hoặc 500 , truy vấn như:

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

Bằng cách làm như trên, truy vấn rất đơn giản và sạch sẽ. Bạn cũng có thể sử dụng $or thay vì $in nhưng tại sao bạn lại bỏ qua ký hiệu viết tắt và cố gắng làm cho truy vấn của bạn trông cồng kềnh bằng cách thêm nhiều đối tượng của cùng một trường lặp đi lặp lại?

Theo mặc định, nếu bạn muốn làm OR logic trên hai toán tử khác nhau, bạn sẽ sử dụng $or Nhưng khi nào thì sử dụng $or trên cùng một trường:

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

Như ở trên, khi bạn có nhiều điều kiện khác nhau để khớp trên cùng một trường, bạn sẽ sử dụng nó.

Hai truy vấn này mang lại kết quả giống nhau khi được thực thi nhưng khi bạn sử dụng $in - nếu giá trị đầu vào là số thẳng hoặc có thể là chuỗi hoặc các kiểu khác trong đó giá trị đầu vào sẽ khớp chính xác với giá trị của price trong tài liệu, nhưng khi bạn sử dụng $or bạn đang kiểm tra các điều kiện khác nhau trên cùng một trường.

Kiểm tra: mongoplayground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có tùy chọn upert trong lệnh chèn mongodb không?

  2. Các ràng buộc duy nhất của MongoDb trên Phạm vi ngày

  3. Rò rỉ bộ nhớ trong con trỏ MongoDB (OutOfMemory)?

  4. Cách loại trừ _id mà không bao gồm các trường khác bằng cách sử dụng khung tổng hợp

  5. Sắp xếp Mongodb với cách phân biệt chữ hoa chữ thường