在IBM我的一份新工作是一名開發的後勤人員。那意味著我的大部分時間都在和資料庫打交道。在我的工作流程中,我花了一些時間在MongoDB上面——這是一個文件資料庫。但是在透過ID來檢索記錄這個操作上面我碰到了一些問題。下面的程式碼是最終版本,以後碰到類似的問題我可以直接引用它。如果大家也需要,希望下面對大家有幫助。
MongoDB 和IDs
當我向一個集合中插入資料的時候,我並沒有設定_id欄位;如果這個欄位是空的話,那麼MongoDB將要自動產生一個ID來使用,這對我來說是非常不錯的。然而,當我使用MongoDB產生的標識符的時候,這樣就會出現問題。
如果我使用db.posts.find()來檢索我的資料(我的集合稱為posts),那麼資料開起來如下所示:
{ "_id" : ObjectId("575038831661d710f04111. , ...
因此,如果我想用ID來檢索資料的話,我還需要包含ObjectId方法來存取ID。
使用PHP庫
當我使用PHP來做這個事情的時候,我在使用這個新的PHP類庫的時並沒有找到一個合適的例子(但是,這個類庫確實是一個非常不錯的庫)。在先前的版本中,這個函式庫使用一個叫做MongoID的類別來實作。但是我知道這不是我想要的——但是我確實可以透過這個類別來檢查文件。因此如果你只是能找到以前程式碼中的例子,那了解這個方法還是很有用的。
透過用這個PHP函式庫將一個ID傳給MongoDB,你需要建構一個MongoDBBSONObjectID實例。下面的例子就是透過文件的Id來檢索部落格中的文件。
$post = $posts->findOne(["_id" => new MongoDBBSONObjectID($id)]);
然後,我將要更新這條部落格文章-這篇部落格文章在記錄中也包含有嵌入的評論,因此向得到_id的這條記錄中的評論集合中添加一個數組,
$result = $posts->updateOne( ["_id" => new MongoDB\BSON\ObjectID($id)], ['$push' => [ "comments" => $new_comment_data ] ]);
最後希望本文對大家有所幫助。謝謝大家對本站的支持!
更多PHP函式庫 查詢Mongodb中的文檔ID的方法相關文章請關注PHP中文網!