Phương pháp kiểm tra kiểu dữ liệu trường trong bộ sưu tập MongoDB

Trong môi trường NoSQL, dữ liệu được lưu trữ dưới dạng tài liệu với cấu trúc linh hoạt, cho phép các bản ghi trong cùng một tập hợp chứa các trường với định dạng khác nhau. Để đảm bảo tính toàn vẹn dữ liệu hoặc phục vụ cho quá trình chuyển đổi quy chuẩn, việc phân tích xem mỗi trường mang kiểu giá trị gì là bước quan trọng. MongoDB cung cấp nhiều cách thức để truy vấn thông tin này thông qua Aggregation Framework hoặc lệnh Shell.

Xác định thông tin kiểu dữ liệu qua Aggregation

Một phương pháp hiệu quả là sử dụng Pipeline để duyệt qua các tài liệu. Bằng cách giới hạn kết quả trả về ở mức độ mẫu, ta có thể giảm tải tác vụ xử lý nhưng vẫn nắm bắt được cấu trúc hiện tại. Dưới đây là ví dụ minh họa trên bộ dữ liệu giả định tên products, nơi chúng ta trích xuất các trường và mã kiểu tương ứng:

db.products.aggregate([
  { $limit: 5 }, // Chỉ lấy 5 bản ghi đầu tiên để khảo sát
  {
    $project: {
      _id: 0,
      fieldName: "$$REMOVE",
      dataType: {
        $type: "$price" // Kiểm tra cụ thể trường price
      }
    }
  }
])

Lệnh trên sẽ trả về thông tin định danh cho trường price. Nếu muốn tổng quát hơn cho toàn bộ cấu hình của mỗi tài liệu, ta có thể kết hợp với hàm $type áp dụng lên các tham chiếu khác nhau. Lưu ý rằng thao tác này yêu cầu người dùng biết trước tên trường hoặc phải lặp qua danh sách khóa trong từng giai đoạn xử lý.

Duyệt thủ công qua Shell Script

Ngoài ra, trong phiên giao dịch động của Mongo Shell, người phát triển có thể chạy một vòng lặp trên con trỏ tìm kiếm để đánh dấu từng trường. Cách làm này cho phép hiển thị rõ ràng mối liên hệ giữa tên biến và kiểu dữ liệu Javascript mà engine đang nhận diện:

db.inventory.find({}, { name: 1, qty: 1 }).forEach(function(doc) {
  Object.keys(doc).forEach(function(prop) {
    var typeName = typeof doc[prop];
    print("Tên thuộc tính: " + prop + " | Loại: " + typeName);
  });
});

Tương tác trên thực thi trên từng đối tượng trong mảng kết quả trả về. Hàm Object.keys() thu thập tất cả các khóa mở rộng từ bản ghi, sau đó toán tử typeof kiểm tra giá trị thực tế. Kết quả in ra màn hình giúp lập trình viên rà soát nhanh sự không đồng nhất về kiểu dữ liệu giữa các dòng khác nhau trong bảng.

Thẻ: mongodb-aggregate mongodb-shell data-types nosql-schema javascript-object

Đăng vào ngày 20 tháng 5 lúc 02:57