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

Toán tử so sánh MongoDB với null

Chi tiết Nitty-Gritty

Đọc qua nguồn Mongo mới nhất , về cơ bản có 2 trường hợp khi thực hiện so sánh liên quan đến null :

  1. Nếu loại chuẩn của các phần tử BSON đang được so sánh là khác nhau, chỉ so sánh bình đẳng (== , >= , <= ) của null &undefined sẽ trả về true; nếu không thì bất kỳ so sánh nào với null sẽ trả về false .
    Lưu ý: Không có loại BSON nào khác có cùng loại chuẩn là null .
  2. Nếu loại chuẩn giống nhau (nghĩa là cả hai phần tử đều null ), sau đó so sánhElementValues ​​ được gọi là. Đối với null , điều này chỉ trả về sự khác biệt giữa canonical gõ của cả hai phần tử BSON và sau đó thực hiện so sánh được yêu cầu với 0 .
    Ví dụ:null > null sẽ dịch thành (5-5) > 0 --> False vì kiểu chuẩn của null là 5.
    Tương tự, null < null sẽ dịch thành (5-5) < 0 --> False .

Điều này có nghĩa là null chỉ có thể bằng null hoặc undefined . Bất kỳ so sánh nào khác liên quan đến null sẽ luôn trả về false .

Đây có phải là lỗi không?

Câu trả lời đã cập nhật:

Tài liệu cho các toán tử so sánh ( $ gt , $ lt ) tham chiếu tài liệu mà bạn đã liên kết ban đầu , ngụ ý rằng các toán tử so sánh nên làm việc với null . Hơn nữa, sắp xếp truy vấn ( tức là , db.find().sort() ) không tuân theo chính xác hành vi So sánh / Sắp xếp đã được lập thành văn bản.

Điều này, ít nhất, không nhất quán. Tôi nghĩ bạn nên gửi báo cáo lỗi tới trang web JIRA của MongoDB .

Câu trả lời gốc:

Tôi không nghĩ hành vi này là lỗi.

sự đồng thuận chung cho Javascript đó có phải là undefined không có nghĩa là chưa được chỉ định while null có nghĩa là được chỉ định nhưng không được xác định khác . So sánh giá trị với không xác định, ngoài sự bình đẳng, không có ý nghĩa, ít nhất là theo nghĩa toán học.

Do BSON lấy rất nhiều từ JavaScript, điều này cũng áp dụng cho MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lược đồ chưa được đăng ký cho mô hình. Mongodb> Mongoose

  2. Mảng chỉ mục MongoDB như thế nào?

  3. Bộ sưu tập phân mảnh MongoDB không tái cân bằng

  4. Truy vấn Mongoose theo ngày

  5. Mongodb không khởi động trong ubuntu