MongoDB ObjectId Nedir?

MongoDB ObjectId, bir MongoDB koleksiyonundaki her belge için varsayılan _id alanı olarak kullanılan 12 baytlık (24 hex karakterli) benzersiz bir tanımlayıcıdır. Yapısı rastgele değildir — anlamlı bilgiler içerir. İlk dört bayt, ObjectId'nin oluşturulduğu saniyeyi temsil eden bir Unix zaman damgası depolar. Kalan baytlar, aynı makinede aynı saniyede birden fazla belge eklendiğinde bile benzersizliği garanti etmek için rastgele bir değer ve artan bir sayaç içerir.

Oluşturma zaman damgası doğrudan tanımlayıcının içine gömüldüğünden, ayrı bir createdAt alanı saklamadan bir belgenin tam olarak ne zaman oluşturulduğunu belirleyebilirsiniz.

Zaman Damgası Nasıl Gömülür

507f1f77bcf86cd799439011 gibi bir ObjectId şu şekilde ayrıştırılır:

Baytlar Hex Karakterler Amaç
1–4 507f1f77 Unix zaman damgası (epoch'tan bu yana geçen saniyeler)
5–9 bcf86cd799 Rastgele değer (makine/işlem başına benzersiz)
10–12 439011 Artan sayaç

İlk sekiz hex karakteri 507f1f77'yi ondalık sayıya dönüştürmek 1350844279 değerini verir; bu da 2012-10-21T21:17:59.000Z tarihine karşılık gelir.

Araç Açıklaması

Bu araç, geçerli herhangi bir MongoDB ObjectId'sinden gömülü zaman damgasını çıkarır ve birden fazla tarih formatında görüntüler. Bir ObjectId yapıştırın ve ISO 8601 tarihi, UTC tarihi, yerel tarih ve ham Unix zaman damgasını anında görün — veritabanı bağlantısı veya kod gerekmez.

Örnekler

Girdi ObjectId Çıkarılan Tarih (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

Özellikler

  • Anında çıkarma: Siz yazarken sonuçlar görünür — buton tıklaması gerekmez
  • Çoklu format: ISO 8601, UTC, yerel tarih/saat ve Unix zaman damgasını görüntüler
  • Girdi doğrulama: Geçerli 24 karakterli hex string olmayan her şeyi reddeder
  • Bağımlılık yok: Sunucu çağrısı veya harici kütüphane olmadan tamamen tarayıcıda çalışır
  • Kopyalamaya hazır çıktı: Her çıktı alanı ayrı ayrı kopyalanabilir

Kullanım Alanları

  • Hata ayıklama: Veritabanını sorgulamadan bir belgenin ne zaman eklendiğini hızlıca kontrol edin
  • Denetim: Dışa aktarılan ObjectId listelerinde veya log dosyalarında oluşturma zaman damgalarını doğrulayın
  • Adli inceleme: Veri taşıma veya olay araştırması sırasında kayıtların yaşını belirleyin

Nasıl Çalışır

  1. Araç, ObjectId'nin ilk 8 hex karakterini alır.
  2. Unix zaman damgasını saniye cinsinden elde etmek için bunları 32-bit big-endian hexadecimal tam sayı olarak ayrıştırır.
  3. 1000 ile çarpar ve bir JavaScript Date nesnesine iletir.
  4. Elde edilen tarihi ISO 8601, UTC string, yerel ayara duyarlı string ve ham saniye olarak biçimlendirir.

Sınırlamalar

  • Yalnızca oluşturma zaman damgası çıkarılır. ObjectId'nin rastgele ve sayaç bölümleri, kullanıcı açısından anlamlı veri taşımadığından çözümlenmez.
  • Özel veya sıfır zaman damgasıyla oluşturulan ObjectId'ler geçerli ancak yanıltıcı olabilecek bir tarih döndürür.
  • Yerel tarih formatı, tarayıcınızın yerel ayarlarına bağlıdır.

SSS

Herhangi bir MongoDB ObjectId'sinden tarih çıkarabilir miyim? Evet. MongoDB driver, Mongoose, mongosh veya Faker.js gibi araçlar tarafından oluşturulan her standart MongoDB ObjectId'si, ilk dört baytında geçerli bir zaman damgası içerir.

Bu, createdAt alanıyla aynı şey midir? Yalnızca ObjectId ekleme zamanında oluşturulduysa (varsayılan durum). Özel bir ObjectId manuel olarak sağlandıysa, gömülü zaman damgası gerçek oluşturma zamanından farklı olabilir.

Bu, eski MongoDB sürümlerinden gelen ObjectId'lerle çalışır mı? Evet. 4 baytlık zaman damgası öneki, MongoDB'nin ilk sürümünden bu yana ObjectId spesifikasyonunun bir parçasıdır. Zaman içindeki tek değişiklik, bu aracın çözümlemediği orta baytlarda (makine kimliği ile rastgele değer) olmuştur.