English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB ObjectId

Dans les chapitres précédents, nous avons utilisé MongoDB ObjectId. Dans ce chapitre, nous allons comprendre la structure d'ObjectId.

ObjectId est un12Le type BSON des octets, avec la structure suivante-

  • Les octets précédents4Un octet représente le nombre de secondes depuis l'époque Unix

  • Les octets suivants3Un octet est l'identifiant de machine

  • Les octets suivants2Un octet est composé de l'ID de processus

  • Enfin3Un octet est une valeur de compteur aléatoire

MongoDB utilise des ObjectIds comme_idLa valeur par défaut de chaque champ de document, cette valeur est générée lors de la création de tout document. La combinaison complexe d'ObjectId assure que tous les champs _id sont uniques.

Créer un nouveau ObjectId

Pour générer un nouveau ObjectId, utilisez le code suivant-

>newObjectId = ObjectId()

Le statement ci-dessus retourne l'ID généré de manière unique suivant-

ObjectId("5349b4ddd2781d08c09890f3")

除了提供MongoDB生成ObjectId之外,您还可以提供12字节的ID-

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

创建文档的时间戳

由于_id ObjectId默认情况下存储4字节的时间戳,因此在大多数情况下,您不需要存储任何文档的创建时间。您可以使用getTimestamp方法获取文档的创建时间-

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

这将以ISO日期格式返回此文档的创建时间-

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

将ObjectId转换为String

在某些情况下,您可能需要字符串格式的ObjectId值。要以字符串形式转换ObjectId,请使用以下代码-

>newObjectId.str

上面的代码将返回Guid的字符串格式-

5349b4ddd2781d08c09890f3