Est-il correct d'utiliser "Object ID" de Mongo comme identifiant unique? Si oui, comment puis-je le convertir en une chaîne et le rechercher par chaîne?
Par exemple...
user/view/?id=324gijsdfi3h25o1
Je peux str()
...mais...
Comment puis-je find
en chaîne?
Edit: je veux que chaque document dans Mongo pour avoir un identifiant unique (généralement une chaîne de caractères) que je ne peux regarder sur. J'espérais que l'ID de l'Objet puisse être à ce point (car il a beaucoup de lettre et il est unique.) Et je veux qu'il fonctionne avec HTTP GET. point de vue?uid=e93jfsb0e3jflskdjf
source d'informationauteur TIMEX
Vous devez vous connecter pour publier un commentaire.
Vous pouvez construire un nouveau
ObjectId
l'aide de la chaîne. Cet exemple utilise MongoDB console:Je ne peux pas dire à partir de votre question qui pilote de langage que vous utilisez (si tout), mais la plupart des conducteurs en charge cette fonctionnalité.
Vous ne devez PAS convertir le
ObjectId
dans la base de données d'une chaîne de caractères, puis de le comparer à une autre chaîne. Si vous souhaitez faire cela, MongoDB ne peut pas utiliser le_id
index et il va scanner tous les documents, provenant d'une mauvaise performance des requêtes.À vos questions:
Oui, c'est prévu à cet effet. Faire unique, Id peut être une douleur dans fragmenté environnements, de sorte MongoDB fait pour vous.
Ne le font pas. Ce n'est pas une chaîne. MongoDB effectivement vous permet de remplacer l'ID par défaut. Donc, si vous commencez à chercher des
#"4cdfb11e1f3c000000007822"
Mongo pense que vous êtes à la recherche d'une chaîne. Si au contraire vous recherchezObjectId("4cdfb11e1f3c000000007822")
Mongo va chercher de l'ObjectId (ou MongoID).Dans votre question, il semble que vous essayez de le faire passer dans une chaîne de caractères. Comment vous convertissez un "objectid" dépendra de votre pilote. PHP a un MongoId. D'autres pilotes ont une fonction similaire.
ObjectId est une façon pratique de générer un unique _id, mais vous êtes libre de le faire vous-même. Pour votre exemple,
fonctionne très bien, si vous avez à gérer les collisions par vous-même. Ensuite, vous pouvez utiliser directement les comparaisons de chaînes en tant que de besoin.