L'ID de la Collection de longueur dans MongoDB
je suis nouveau sur mongodb et de dépassement de pile.
Je voudrais savoir pourquoi sur mongodb l'ID de la collection est de 24 caractères hex?
quelle est l'importance de qui?
- La documentation officielle est un bon endroit pour commencer: ObjectId
- La valeur par défaut identifiant unique généré pour une clé primaire (
_id
) est un ObjectId. C'est un 12 octets valeur binaire qui est souvent représenté comme un 24 caractères chaîne hexadécimale. Si vous avez un plus adapté identificateur unique à utiliser, vous pouvez fournir votre propre valeur pour_id
. L'importance d'un ObjectId est que des valeurs uniques peuvent être générés dans un système distribué (généralement par le pilote client). Ceci est similaire à Guid>, bien que plus compact.
Vous devez vous connecter pour publier un commentaire.
Pourquoi est la valeur par défaut
_id
24 caractères chaîne hexadécimale?La valeur par défaut identifiant unique généré en tant que clé primaire (
_id
) pour une MongoDB est un document ObjectId. C'est un 12 octets de valeur binaire qui est souvent représenté comme un 24 caractères chaîne hexadécimale, et de types de champ pris en charge par la MongoDB BFILS spécification.Le 12 octets d'un ObjectId sont construits à l'aide de:
Qu'est-ce que l'importance d'un ObjectId?
ObjectIds (ou similaire identifiants générés selon une GUID formule) permettent d'identificateurs uniques pour être indépendamment généré dans un système distribué.
La capacité indépendamment de générer un ID unique devient très important que vous évoluer à plusieurs serveurs d'applications (ou peut-être de multiples nœuds de bases de données dans un fragmenté cluster). Vous ne voulez pas d'avoir un centre de coordination de goulot d'étranglement comme un compteur de séquences (par exemple. comme vous avez pu pour une incrémentation automatique de la clé primaire), et vous souhaitez insérer de nouveaux documents sans risque qu'un nouvel identifiant, se révélera être un doublon.
Un ObjectId est généralement généré par votre MongoDB pilote client, mais peut aussi être généré sur le serveur MongoDB si votre pilote client ou le code de l'application ou que vous n'avez pas déjà ajouté un
_id
champ.Dois-je utiliser la valeur par défaut ObjectId?
Pas. Si vous avez un plus adapté identificateur unique à utiliser, vous pouvez toujours fournir votre propre valeur pour
_id
. Cela peut être soit une seule valeur ou d'une valeur composite à l'aide de plusieurs champs.Les principales contraintes à la
_id
valeurs qu'ils ont tous à être unique pour une collection et vous ne pouvez pas mettre à jour ou supprimer les_id
pour un document existant._id
s (bien que, certainement, les développeurs ont fait des hypothèses sur l'horodatage aspect depuis). Il y a eu plusieurs ObjectId variations déjà, tel que mis en œuvre par les différents héritage des pilotes (voir le "sous-types" dans le BFILS spec ou comme écrit dans UUID de Soutien dans Robomongo)._id
plutôt que la valeur par défaut ObjectId.