IBM 開発者として、この新しい仕事は、データベースを使って生計を立てることができることを意味します (これはこれまでで最も素晴らしいことです。真剣に受け止めなければなりません)。テクノロジーを学ぶ中で、ドキュメント データベースである MongoDB をしばらく使用しましたが、ID レコードのスクレイピングで問題が発生しました。したがって、次のコードは、私が遭遇した問題を最終的に理解するのに役立ちます。これらのコードを参照することができます。誰かがそれを必要とする場合は、それが役立つことを願っています。
MongoDB と IDコレクションにデータを挿入するとき、_id フィールドを設定しません。フィールドが空の場合、MongoDB は ID を生成して使用するだけですが、これは問題ありません。問題は、識別子を生成するためにデータを取得するときに発生します。
db.posts.find() を使用してデータをチェックすると、データは次のようになります:
{ "_id" : ObjectId("575038831661d710f04111c1"), ...
したがって、ID で取得したい場合は、ID を呼び出すために ObjectId 関数が必要です。
PHP ライブラリの使用
PHP を使用するようになったとき、新しい MongoDB PHP ライブラリ (使用すると良いライブラリです) を使用してこのように ID を使用する例を見つけることができませんでした。このライブラリの古いバージョンでは MongoID と呼ばれるクラスが使用されており、それが私が望んでいたものではないことはわかっていましたが、ドキュメントを確認したところ、新しい同等のクラスを指すように更新されていることがわかりました。したがって、古いコード例しか見つからないかどうかを知ることも非常に役立ちます。
PHP ライブラリを使用して MongoDB に ID を渡すには、MongoDBBSONObjectID を構築する必要があります。次に、私が挙げた例はブログ投稿であり、その ID を使用してレコードを取得します:
$post = $posts->findOne(["_id" => new MongoDB\BSON\ObjectID($id)]);
その後、ブログによって更新されたレコードにはネストされたコメントのレコードが含まれるため、コメント コレクションに配列を追加する必要があります_id 私は知っています 記録の 1 つで、私は次のコードを使用しました:
$result = $posts->updateOne( ["_id" => new MongoDB\BSON\ObjectID($id)], ['$push' => [ "comments" => $new_comment_data ] ] );
同じ問題に遭遇したとき、それが何らかのガイダンスを提供し、できるだけ時間を節約できることを願っています。
原文: Finding Mongo Document IDs using the PHP Library (翻訳者/Sun Si)