Мы использовали идентификатор объекта 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 —