Mon nouveau travail chez IBM est en tant que membre de l'équipe de support au développement. Cela signifie que je passe la plupart de mon temps à travailler avec des bases de données. Dans mon flux de travail, j'ai passé du temps avec MongoDB, qui est une base de données de documents. Mais j'ai rencontré quelques problèmes lors de la récupération des enregistrements par ID. Le code ci-dessous est la version finale, je peux le citer directement lorsque je rencontrerai des problèmes similaires à l'avenir. Si vous en avez également besoin, j'espère que ce qui suit vous sera utile.
MongoDB et identifiants
Lorsque j'insère des données dans une collection, je ne définis pas le champ _id si ce champ est vide, alors MongoDB générera automatiquement un identifiant ; à utiliser, ce qui est très agréable pour moi. Cependant, cela crée des problèmes lorsque j'utilise des identifiants générés par MongoDB.
Si j'utilise db.posts.find() pour récupérer mes données (ma collection s'appelle posts), alors les données ressemblent à ceci :
{ "_id " : ObjectId("575038831661d710f04111c1"), ...
Donc, si je souhaite récupérer les données à l'aide de l'ID, je dois également inclure la méthode ObjectId pour accéder à l'ID.
Utilisation de la bibliothèque PHP
Lorsque j'ai utilisé PHP pour ce faire, je n'ai pas trouvé d'exemple approprié lors de l'utilisation de cette nouvelle bibliothèque PHP (Cependant, cette bibliothèque de classes est en effet une très bonne bibliothèque). Dans les versions précédentes, cette bibliothèque était implémentée à l'aide d'une classe appelée MongoID. Mais je sais que ce n’est pas ce que je veux – mais je peux réellement inspecter le document grâce à ce cours. Il est donc utile de connaître cette méthode si vous ne pouvez trouver que des exemples du code précédent.
Pour transmettre un identifiant à MongoDB à l'aide de cette bibliothèque PHP, vous devez construire une instance MongoDBBSONObjectID. L'exemple suivant récupère des documents dans un blog par ID de document.
$post = $posts->findOne(["_id" => new MongoDBBSONObjectID($id)]);
Alors, je vais pour mettre à jour cet enregistrement - ce billet de blog contient également des commentaires intégrés dans cet enregistrement, alors ajoutez un tableau à la collection de commentaires dans cet enregistrement avec le _id,
$result = $posts->updateOne( ["_id" => new MongoDB\BSON\ObjectID($id)], ['$push' => [ "comments" => $new_comment_data ] ]);
Enfin, j’espère que cet article sera utile à tout le monde. Merci à tous pour votre soutien à ce site !
Pour plus de bibliothèques PHP, veuillez prêter attention au site Web PHP chinois pour des articles connexes sur la façon d'interroger l'ID de document dans Mongodb !