MongoDB ObjectId ตัวแปลง Timestamp ↔ ObjectId

คุณรู้หรือไม่ว่า MongoDB ObjectId แต่ละตัวมีการฝังเวลาที่สร้างไว้ด้วย?
จาก mongo shell คุณสามารถใช้ getTimestamp() เพื่อดึงเวลาจาก ObjectId แต่ไม่มีฟังก์ชันในตัวสำหรับสร้าง ObjectId จากเวลา
ตัวแปลงออนไลน์นี้จะแปลงเวลาเป็น ObjectId และกลับกัน

ObjectId

(หมายเหตุ: ไม่เป็นเอกลักษณ์ ใช้สำหรับการเปรียบเทียบเท่านั้น ไม่ใช่สำหรับสร้างเอกสารใหม่!)

ObjectId สำหรับวางใน mongo shell

Time (UTC)

ปี (4 หลัก)
เดือน (1 - 12)
วัน (1 - 31)
ชั่วโมง (0 - 23)
นาที (0 - 59)
วินาที (0 - 59)
เวลา ISO

ทำไมต้องสร้าง ObjectId จากเวลา?

เพื่อค้นหาความคิดเห็นทั้งหมดที่สร้างหลังจาก 2013-11-01:

db.comments.find({_id: {$gt: ObjectId("5272e0f00000000000000000")}})

Javascript functions

var objectIdFromDate = function (date) {
    return Math.floor(date.getTime() / 1000).toString(16) + "0000000000000000";
};
            
var dateFromObjectId = function (objectId) {
    return new Date(parseInt(objectId.substring(0, 8), 16) * 1000);
};