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

Tìm kiếm trong MongoDB cho từng mệnh lệnh trong danh sách trong bộ sưu tập

Mặc dù có đề cập rằng thực sự $and toán tử không bắt buộc, ở cả hai dạng, đây không phải là truy vấn mà bạn muốn. Hãy xem xét những điều sau:

db.user.find_one({ 'names.firstName': 'alice','names.lastName': 'jones' })

Thực tế điều này không khớp với bản ghi đã cho vì có cả hai phần tử có giá trị "firstName" bằng "alice" và "lastName" bằng giá trị "jones". Nhưng tất nhiên vấn đề ở đây rất đơn giản là không có phần tử thực sự nào trong mảng có tài liệu con cho cả hai giá trị đó.

Để đối sánh nơi một phần tử mảng chứa "cả hai" tiêu chí đã cho, bạn cần sử dụng $elemMatch nhà điều hành. Điều này áp dụng điều kiện truy vấn cho các "phần tử" của mảng.

db.user.find_one({ 
    'names': { '$elemMatch': { 'firstName': 'alice','lastName': 'smith' }
})

Và tất nhiên nếu bạn đã thử "alice" và "jones" thì điều đó sẽ không khớp vì không có phần tử nào thực sự chứa thao tác đó.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. next.js và mongodb atlas - nhận Kết nối% của giới hạn đã định cấu hình đã vượt quá cảnh báo 80

  2. MongoDB $ toDate

  3. Sử dụng SetFields với MongoDB C # driver 2.0

  4. Làm cách nào để cập nhật một trường cụ thể trong mongoose?

  5. Tại sao các tên khóa được lưu trữ trong tài liệu trong MongodDB