Учебники

MongoDB — ObjectId

Мы использовали идентификатор объекта MongoDB во всех предыдущих главах. В этой главе мы поймем структуру ObjectId.

ObjectId — это 12-байтовый тип BSON, имеющий следующую структуру:

  • Первые 4 байта, представляющие секунды с эпохи Unix
  • Следующие 3 байта являются идентификатором машины
  • Следующие 2 байта состоят из идентификатора процесса
  • Последние 3 байта являются случайным значением счетчика

MongoDB использует ObjectIds в качестве значения по умолчанию поля _id каждого документа, которое генерируется при создании любого документа. Сложная комбинация ObjectId делает все поля _id уникальными.

Создание нового ObjectId

Для создания нового ObjectId используйте следующий код —

>newObjectId = ObjectId()

Вышеуказанный оператор вернул следующий уникально сгенерированный идентификатор —

ObjectId("5349b4ddd2781d08c09890f3")

Вместо MongoDB, генерирующего ObjectId, вы также можете предоставить 12-байтовый идентификатор —

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Создание метки времени документа

Поскольку _id ObjectId по умолчанию хранит 4-байтовую временную метку, в большинстве случаев вам не нужно хранить время создания какого-либо документа. Вы можете получить время создания документа, используя метод getTimestamp —

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

Это вернет время создания этого документа в формате даты ISO —

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

Преобразование ObjectId в строку

В некоторых случаях вам может понадобиться значение ObjectId в строковом формате. Чтобы преобразовать ObjectId в строку, используйте следующий код —

>newObjectId.str

Приведенный выше код вернет формат строки Guid —