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

Trả về bản ghi Age là số nguyên (int) trong MongoDB

Lọc document theo kiểu dữ liệu BSON với $type

Toán tử $type cho phép truy vấn document dựa trên kiểu dữ liệu BSON của trường (string, int, double, array, object...).

1. Dữ liệu: Age混合 kiểu int và string

> db.demo470.insertOne({ Age: 23 });
> db.demo470.insertOne({ Age: "Unknown" });
> db.demo470.insertOne({ Age: 24 });
> db.demo470.insertOne({ Age: "Not provided" });

2. Chỉ lấy Age là số (int/double)

> db.demo470.find({ 'Age': { $type: "number" } });

3. Kết quả

{ "_id": ObjectId("5e805456b0f3fa88e2279070"), "Age": 23 }
{ "_id": ObjectId("5e805461b0f3fa88e2279072"), "Age": 24 }

Các alias kiểu dữ liệu phổ biến

AliasBSON TypeSố hiệuVí dụ
"double"Double13.14
"string"String2"hello"
"object"Object3{ a: 1 }
"array"Array4[1, 2, 3]
"binData"Binary5BinData(0, "...")
"objectId"ObjectId7ObjectId("...")
"bool"Boolean8true/false
"date"Date9ISODate("...")
"null"Null10null
"regex"Regex11/pattern/
"int"32-bit Integer16NumberInt(42)
"long"64-bit Integer18NumberLong(42)
"number"Double, Int, Long-1, 1.5, NumberLong(1)

Ví dụ nâng cao

// Chỉ lấy Age là Int32 (không phải Double, Long)
db.demo470.find({ Age: { $type: "int" } });

// Lấy Age KHÔNG phải string (số hoặc null)
db.demo470.find({ Age: { $not: { $type: "string" } } });

// Kết hợp nhiều kiểu
db.demo470.find({ Age: { $type: ["int", "long", "double"] } });

Ứng dụng thực tế

  • Dọn dẹp dữ liệu bẩn (dirty data) - tìm field sai kiểu
  • Migration dữ liệu - xác định record cần convert
  • Validation schema-less collection