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

Tìm tài liệu có mảng không chứa giá trị cụ thể

Về cơ bản, không có gì sai với những gì bạn đang cố gắng, nhưng có lẽ điều làm rõ duy nhất ở đây là quan niệm sai lầm phổ biến rằng bạn cần các toán tử như $nin hoặc $in khi truy vấn một mảng.

Ngoài ra, bạn thực sự cần làm ở đây là đối sánh bất đẳng thức cơ bản với $ne :

Person.find({ "groups": { "$ne": group._id } })

Toán tử "mảng" không dành cho "mục tiêu mảng" mà để cung cấp "danh sách" các điều kiện để kiểm tra ở dạng thuận tiện.

Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })

Vì vậy, chỉ cần sử dụng các toán tử bình thường cho các điều kiện đơn lẻ và tiết kiệm $in$nin cho nơi bạn muốn kiểm tra nhiều hơn một điều kiện đối với một giá trị đơn lẻ hoặc một danh sách. Vì vậy, nó chỉ là một chiều ngược lại.

Nếu bạn cần chuyển "danh sách" các đối số trong đó "không" đối số nào trong danh sách được cung cấp khớp với nội dung của mảng thì bạn đảo ngược logic với $not toán tử và $all nhà điều hành:

Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })

Vì vậy, điều đó có nghĩa là "không có danh sách nào trong danh sách" được cung cấp hiện diện trong mảng.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB sẽ không bắt đầu sau sự cố máy chủ

  2. Xóa một trường khỏi tất cả các phần tử trong mảng trong mongodb

  3. Sự cố khi trả về dữ liệu được truy xuất từ ​​các truy vấn DB được gọi trong vòng lặp

  4. Làm thế nào để thực thi các lệnh mongo thông qua các tập lệnh shell?

  5. Nhà điều hành đường ống tổng hợp MongoDB $ max