MongoDB là một trong vô vàn các cơ sở dữ liệu phi quan hệ được sử dụng trong thời đại công nghệ thông tin phát triển hiện nay. Đây cũng là một cơ sở dữ liệu hoạt động dựa trên các document. Mỗi bản ghi phải cần được đánh một chỉ mục duy nhất để phục vụ cho việc thao tác với dữ liệu, trong MongoDB chỉ mục được gọi là ObjectId. Trong bài viết này, Stringee và các bạn sẽ cùng nhau tìm hiểu về phương thức này nhé.

1. Mô tả nhanh về ObjectId trong MongoDB

ObjectId(<value>) là phương thức nhận đầu vào là một document, nó sẽ trả về kết quả là một ObjectId, là giá trị có dung lượng 12 byte bao gồm:

  • 4 byte timestamp, đại diện cho thời gian mà object được khởi tạo
  • 5 byte là các giá trị được tạo một cách ngẫu nhiên bởi tiến trình, nó sẽ là độc nhất với từng máy chủ và các tiến trình thực hiện tạo nó
  • 3 byte là các giá trị được tự động tăng bởi các bộ đếm, nó sẽ khởi tạo ra một giá trị ngẫu nhiên

Với timestamp và giá trị đếm, byte rõ ràng nhất (big-endian) sẽ hiển thị đầu tiên trong chuỗi bit của nó. Điều này khác với kiểu BSON khi mà bit ít nổi bật nhất sẽ được xuất hiện đầu tiên (little-endian).

Nếu một giá trị số nguyên được sử dụng để tạo ra một ObjectId, số nguyên đó sẽ thay thế cho timestamp.

>>> Xem thêm bài viết về MongoDB:

Tìm hiểu về cơ sở dữ liệu phi quan hệ MongoDB

Sử dụng map reduce trong MongoDB

Giới thiệu về GridFS trong MongoDB

2. Cú pháp và hành vi của phương thức

Hàm này nhận vào một số đầu vào dưới đây:

Loại đầu vào

Mô tả

hexadecimal

Tùy chọn, là một đoạn chuỗi hệ 16 dài 24 ký tự cho ObjectId mới

integer

Tùy chọn, là một giá trị số nguyên, ở dạng dây, là số giây được thêm vào cho Unix epoch để tạo một timestamp mới

Các phương thức mà ObjectId cung cấp:

Phương thức

Mô tả

ObjectId.getTimestamp()

Trả về timestamp của đối tượng dưới dạng ngày tháng

ObjectId.toString()

Trả về ObjectId dưới dạng một chuỗi hệ 16

ObjectId.valueOf()

Trả về chính nó

3. Ví dụ và cách sử dụng

3.1. Tạo một ObjectId mới

Để tạo một ObjectId mới, sử dụng hàm ObjectId() không có biến đầu vào:

newObjectId = ObjectId()

Trong ví dụ này, giá trị của newObjectId là:

ObjectId("507f1f77bcf86cd799439011")

3.2. Trả lại một chuỗi hệ 16

Để trả về ObjectId dưới dạng một chuỗi hệ 16, sử dụng phương thức toString()

ObjectId("507f191e810c19729de860ea").toString()

Phương thức này trả lại:

507f191e810c19729de860ea

3.3. Định nghĩa một chuỗi số nguyên

Nếu bạn muốn điều chỉnh timestamp của ObjectId, sử dụng một số nguyên để tạo ra một ObjectId mới:

newObjectId = ObjectId(32)

Giá trị của ObjectId sẽ tựa như là:

ObjectId("00000020f51bb4362eee2a4d")

Ví dụ ObjectId gồm có các phần sau:

  • 4 byte timestamp: 00000020
  • 5 byte ngẫu nhiên: f51bb4362e
  • 3 byte là bộ đếm: ee2a4d

4 byte đầu tiên của ObjectId là số giây bắt đầu từ Unix epoch. Trong ví dụ này, timestamp của ObjectId là 00000020 được sử dụng trong hệ 32.

3.4. Định nghĩa một chuỗi hệ 16

Nếu bạn muốn sử dụng một chuỗi hệ 16 để định nghĩa một ObjectId, truyền vào một chuỗi độc nhất bao gồm 24 ký tự hệ 16 khi bạn gọi hàm ObjectId():

newObjectId = ObjectId("507f191e810c19729de860ea")

Kết

ObjectId là một khái niệm rất quan trọng trong MongoDB, mỗi document đều có một id riêng biệt sẽ phục vụ cho việc lưu trữ và truy vấn vào các document sau này. Qua bài viết trên, mong rằng các bạn sẽ hiểu thêm hơn về khái niệm này.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: