IBM での私の新しい仕事は、開発サポート スタッフ メンバーです。つまり、ほとんどの時間をデータベースの操作に費やしています。私のワークフローでは、ドキュメント データベースである MongoDB にしばらく時間を費やしました。しかし、ID によるレコードの取得でいくつかの問題が発生しました。以下のコードは最終バージョンです。今後同様の問題が発生した場合に直接引用できます。こちらも必要な場合は、以下が役立つことを願っています。
MongoDB と ID
コレクションにデータを挿入するときに、_id フィールドを設定しませんでした。このフィールドが空の場合、MongoDB は使用する ID を自動的に生成しますが、これは私にとっては間違っています。ただし、MongoDB によって生成された識別子を使用すると、問題が発生します。
db.posts.find() を使用してデータ (私のコレクションは posts と呼ばれます) を取得すると、データは次のようになります:
{ "_id" : ObjectId("575038831661d710f04111c1") , ...
そのため、ID を使用してデータを取得したい場合は、ID にアクセスするための ObjectId メソッドも含める必要があります。
PHP ライブラリの使用
PHP を使用してこれを実行したとき、この新しい PHP ライブラリの適切な使用例が見つかりませんでした (ただし、このクラス ライブラリは確かに非常に優れたライブラリです)。以前のバージョンでは、このライブラリは MongoID というクラスを使用して実装されていました。しかし、それが私が望んでいることではないことはわかっていますが、このクラスを通じて実際にドキュメントを検査することができます。したがって、前のコードの例しか見つからない場合は、この方法を知っておくと便利です。
この PHP ライブラリを使用して MongoDB に ID を渡すことにより、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 中国語 Web サイトに注目してください。