ID uniques avec mongodb
Si je ont été la construction d'un blog que je pouvais utiliser le titre du blog en tant qu'identifiant unique et l'analyser par le biais de l'URL. Cependant, si je voulais utiliser des chiffres. Vous savez comment twitter a www.twitter.com/username/statuses/9834542? Quelqu'un a trouvé une belle façon de faire ce travail? à l'aide de "_id" il est hors de question, car il est beaucoup trop long.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que vous pouvez garantir l'unicité, vous n'êtes pas limité à l'utilisation de la valeur par défaut "_id" MongoDB fournitures.
Par conséquent, il est à vous de voir comment vous pouvez générer ce nombre. Si vous souhaitez stocker ce nombre à l'intérieur de MongoDB, alors vous pouvez le stocker dans une collecte séparée et de l'incrémenter à chaque nouvelle URL demandée.
Incrémentation d'un champ est obtenu par l'utilisation de le
$inc
verbeou vous pouvez prendre un coup d'oeil à la façon dont MongoDB atomiquement mise à jour ou incrémenter une valeur.Il peut être fait en utilisant la findandmodify commande.
Considérons que nous avons une collection spéciale nommée
sequences
et nous voulons avoir une séquence post numéros (nommépostid
), vous pouvez utiliser un code similaire à ceci:Cette commande retournera automatiquement la mise à jour (
new
) document d'état. Levalue
champ contient le document retourné si la commande s'est terminée correctement.Si vous souhaitez ajouter une contrainte d'unicité à votre domaine dans MongoDB, utiliser un index. Ensuite, vous pouvez utiliser n'importe quel algorithme de hachage vous souhaitez générer le nombre et le tester pour l'unicité. L'exemple de la MongoDB documentation est
qui va vous empêcher de l'insertion de documents avec le même prénom ET nom que d'un autre document.
Plus d'informations sont disponibles dans le la documentation.
J'ai résolu ce problème en créant la collection "séquence" avec les données:
Je suis en utilisant Morhpiaont donc DAO. Mais vous pouvez le faire sans Morhpia trop.
L'idée est d'utiliser $atomique (probablement, il peut être omis en raison updateing 1 instance) et $inc modificateur de l'opérateur.
Séquence
Méthode sur SequenceDAO:
Selon MongoDB configuration (un seul nœud ou maître/esclave ou d'un jeu de réplicas) vous devez utiliser les bons WriteConcern. À l'aide de REPLICATION_SAFE dans un environnement avec un exemple, provoque une boucle infinie.
Techniquement, le numéro d'identification est trop grand pour la raccourcir. Cependant, une tactique peut être rempli. C'est en passant de l'Hex alphanumérique, ainsi, de réduire le nombre de caractères à tulizar et ressemble de plus belle dans l'Url. J'ai vraiment bien servis ... voici
Bien entendu, cette technique utilise le même id, mongo.