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

Cách tìm document có trường NaN trong MongoDB?

Để 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ơi NaN !== NaN, nhưng MongoDB xử lý so sánh NaN đúng chuẩn trong truy vấn.