Tìm kiếm chính xác 32-bit integer với NumberInt
NumberInt() ép kiểu giá trị thành 32-bit signed integer. Quan trọng khi truy vấn trường được lưu dưới dạng NumberInt.
Dữ liệu với NumberInt
> db.demo357.insertOne({
"FirstName": "Chris",
"Age": 21,
"details": { "studentDetails": { "id": NumberInt(101) } }
});
> db.demo357.insertOne({
"FirstName": "David",
"Age": 23,
"details": { "studentDetails": { "id": NumberInt(110) } }
});
Tìm document id = 110
> db.demo357.find({ "details.studentDetails.id": NumberInt(110) });
Kết quả
{
"_id": ObjectId("..."),
"FirstName": "David",
"Age": 23,
"details": { "studentDetails": { "id": 110 } }
}
Lưu ý:
- MongoDB shell tự động chuyển số nhỏ thành NumberInt
- Driver các ngôn ngữ có class NumberInt riêng (PyMongo: Int32, Node: Int32)
- Sai kiểu (int64 vs int32) sẽ không khớp:
NumberLong(110)≠NumberInt(110) - Trong aggregation:
{ $convert: { input: "$id", to: "int" } }