Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách truy vấn MongoDB dùng toán tử $ne?

Toán tử $ne (not equal - không bằng) trong MongoDB chọn document mà giá trị trường khác với giá trị chỉ định. Cú pháp: {trường: {$ne: giáTrị}}.

Tạo dữ liệu mẫu


Hiển thị tất cả:

{ "_id" : ObjectId("5cbd3a6bde8cc557214c0ded"), "StudentName" : "Larry", "StudentMathMarks" : 68 }
{ "_id" : ObjectId("5cbd3a79de8cc557214c0dee"), "StudentName" : "Chris", "StudentMathMarks" : 88 }
{ "_id" : ObjectId("5cbd3a89de8cc557214c0def"), "StudentName" : "David", "StudentMathMarks" : 45 }
{ "_id" : ObjectId("5cbd3a97de8cc557214c0df0"), "StudentName" : "Carol", "StudentMathMarks" : 69 }

Truy vấn: StudentMathMarks KHÁC 88

{ "_id" : ObjectId("5cbd3a6bde8cc557214c0ded"), "StudentName" : "Larry", "StudentMathMarks" : 68 }
{ "_id" : ObjectId("5cbd3a89de8cc557214c0def"), "StudentName" : "David", "StudentMathMarks" : 45 }
{ "_id" : ObjectId("5cbd3a97de8cc557214c0df0"), "StudentName" : "Carol", "StudentMathMarks" : 69 }

Đặc điểm quan trọng của $ne

  • Khớp document không có trường đó (missing field) - khác với SQL WHERE field <> value
  • Không tận dụng index hiệu quả (thường dẫn đến collection scan)
  • Hoạt động với mọi kiểu dữ liệu: số, chuỗi, date, object, array, null
  • Với array: Khớp nếu không có element nào bằng giá trị (khác $nin)

Mẹo tối ưu: Nếu có thể, viết lại dưới dạng $in với danh sách giá trị mong muốn, hoặc dùng $not: {$eq: value} (tương đương nhưng đôi khi optimizer xử lý tốt hơn).