Latest web development tutorials

MongoDB ObjectId

W ciągu kilku pierwszych rozdziałów użyliśmy MongoDB ID obiektu (ObjectId).

W tej części przyjrzymy się strukturze objectID.

ObjectId BSON jest to typ danych 12-bajtowy, ma następujący format:

  • Pierwsze cztery bajty datownik
  • Kolejne trzy bajtów kodu maszynowego jest
  • Natychmiast dwa bajty złożone przez identyfikator procesu (PID)
  • Przez ostatnie trzy bajty liczb losowych.

Dokumenty MongoDB przechowywane muszą być kluczowym "_id". Wartość tego klucza może być dowolnego typu, domyślnie jest ObjectId obiektu.

W jednym zestawie wewnątrz każdego dokumentu ma unikalną wartość "_id", aby zapewnić pobieranie wewnątrz każdego dokumentu może być identyfikowany.

MongoDB wykorzystuje objectID, ale nie jest głównym powodem, inne bardziej konwencjonalne podejście (takie jak auto-przyrostu klucz podstawowy), ponieważ wartość klucza podstawowego jest automatycznie zwiększana synchronizację na wielu serwerach jest czasochłonne i pracochłonne.


Utwórz nowy objectID

Użyj następującego kodu, aby wygenerować nowy objectID:

>newObjectId = ObjectId()

Powyższe stwierdzenie zwraca następujący jednoznacznie wygenerowany identyfikator:

ObjectId("5349b4ddd2781d08c09890f3")

Można również użyć wygenerowany identyfikator zamiast MongoDB automatycznie wygenerowanego ObjectId:

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Dokumenty datownika utworzenia

Od objectID przechowywane w czterech bajtów znacznikiem czasu, więc nie ma potrzeby, aby zapisać pola datownika na dokumenty, można utworzyć czas, aby dokumenty według funkcji getTimestamp:

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

Powyższy kod zwróci czas tworzenia dokumentu w formacie ISO:

ISODate("2014-04-12T21:49:17Z")

ObjectId zamienione na ciąg

W niektórych przypadkach może być konieczne, aby przekonwertować ciąg objectID format. Można użyć następującego kodu:

>new ObjectId().str

Powyższy kod zwróci ciąg formatu Guid ::

5349b4ddd2781d08c09890f3