Mein neuer Job bei IBM ist ein Mitarbeiter im Entwicklungssupport. Das bedeutet, dass ich die meiste Zeit mit der Arbeit mit Datenbanken verbringe. In meinem Workflow habe ich einige Zeit mit MongoDB verbracht – einer Dokumentendatenbank. Beim Abrufen von Datensätzen nach ID sind jedoch einige Probleme aufgetreten. Der folgende Code ist die endgültige Version. Ich kann ihn direkt zitieren, wenn in Zukunft ähnliche Probleme auftreten. Wenn Sie es auch benötigen, hoffe ich, dass das Folgende für Sie hilfreich ist.
MongoDB und IDs
Wenn ich Daten in eine Sammlung einfüge, lege ich das Feld _id nicht fest; wenn dieses Feld leer ist, generiert MongoDB automatisch eine ID Die Bedienung gefällt mir sehr gut. Dies führt jedoch zu Problemen, wenn ich von MongoDB generierte Bezeichner verwende.
Wenn ich db.posts.find() verwende, um meine Daten abzurufen (meine Sammlung heißt Beiträge), dann sehen die Daten so aus:
{ "_id " : ObjectId("575038831661d710f04111c1"), ...
Wenn ich also die Daten mithilfe der ID abrufen möchte, muss ich auch die ObjectId-Methode einschließen, um auf die ID zuzugreifen.
Verwendung der PHP-Bibliothek
Als ich dafür PHP verwendet habe, habe ich bei der Verwendung dieser neuen PHP-Bibliothek kein passendes Beispiel gefunden (diese Klassenbibliothek ist es jedoch). tatsächlich eine sehr gute Bibliothek). In früheren Versionen wurde diese Bibliothek mithilfe einer Klasse namens MongoID implementiert. Aber ich weiß, dass das nicht das ist, was ich will – aber ich kann das Dokument tatsächlich über diese Klasse überprüfen. Daher ist es hilfreich, diese Methode zu kennen, wenn Sie nur Beispiele aus vorherigem Code finden können.
Um mithilfe dieser PHP-Bibliothek eine ID an MongoDB zu übergeben, müssen Sie eine MongoDBBSONObjectID-Instanz erstellen. Das folgende Beispiel ruft Dokumente in einem Blog nach Dokument-ID ab.
$post = $posts->findOne(["_id" => new MongoDBBSONObjectID($id)]);
Dann gehe ich um diesen Datensatz zu aktualisieren – dieser Blog-Beitrag enthält auch eingebettete Kommentare in diesem Datensatz, also fügen Sie der Sammlung von Kommentaren in diesem Datensatz ein Array mit der _id hinzu,
$result = $posts->updateOne( ["_id" => new MongoDB\BSON\ObjectID($id)], ['$push' => [ "comments" => $new_comment_data ] ]);
Abschließend hoffe ich, dass dieser Artikel für alle hilfreich sein wird. Vielen Dank an alle für die Unterstützung dieser Website!
Weitere PHP-Bibliotheken finden Sie auf der chinesischen PHP-Website. Dort finden Sie verwandte Artikel zum Abfragen der Dokument-ID in Mongodb!