Để tìm tất cả document có trường mang giá trị NaN (Not a Number) trong MongoDB, bạn truy vấn trực tiếp với giá trị NaN hoặc biểu thức tạo ra NaN như 0/0.
Cú pháp
db.tênCollection.find( { tênTrường: NaN } )
Tạo dữ liệu mẫu
> db.nanDemo.insertOne({"Score":0/0});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca251a26304881c5ce84b8a") }
> db.nanDemo.insertOne({"Score":10/5});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2520e6304881c5ce84b8b") }
> db.nanDemo.insertOne({"Score":20/0});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca252156304881c5ce84b8c") }
> db.nanDemo.insertOne({"Score":0/20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2521e6304881c5ce84b8d") }
Hiển thị tất cả:
> db.nanDemo.find().pretty();
Truy vấn tìm NaN
Cách 1: Sử dụng biểu thức 0/0
> db.nanDemo.find( { Score: 0/0 } );Cách 2: Sử dụng trực tiếp NaN
> db.nanDemo.find( { Score: NaN } )Kết quả (cả hai cách):
Lưu ý: MongoDB lưu trữ NaN và Infinity là các giá trị số đặc biệt (IEEE 754). Truy vấn
{Score: NaN}chỉ khớp chính xác với NaN, không khớp với Infinity hay các giá trị khác. Điều này khác với JavaScript nơiNaN !== NaN, nhưng MongoDB xử lý so sánh NaN đúng chuẩn trong truy vấn.