ホームページ >データベース >モンゴDB >MongoDBでドキュメントを作成、読み取り、更新、削除するにはどうすればよいですか?

MongoDBでドキュメントを作成、読み取り、更新、削除するにはどうすればよいですか?

Karen Carpenter
Karen Carpenterオリジナル
2025-03-11 18:04:17731ブラウズ

この記事では、MongoDBでCreate、読み取り、更新、削除(CRUD)操作を実行しています。 INSERTONE()、find()、updateone()、deleteone()、およびインデックス、バッチオペラティオなどの効率的な操作のためのベストプラクティスなどの方法を使用してカバーします

MongoDBでドキュメントを作成、読み取り、更新、削除するにはどうすればよいですか?

MongodbでCRUD操作を実行する方法

このセクションでは、MongoDBで作成、読み取り、更新、削除(CRUD)操作を実行する方法について詳しく説明しています。 「製品」という名前のコレクションの例を使用して、 _idnameprice 、およびdescriptionフィールドを含むドキュメントを使用します。

ドキュメントの作成:新しいドキュメント(INSERT)を作成するには、 insertOne()メソッド(単一のドキュメントに)またはinsertMany() (複数のドキュメントの場合)を使用します。 Mongodbシェルを使用した例は次のとおりです。

 <code class="javascript">db.products.insertOne( { name: "Laptop", price: 1200, description: "Powerful laptop" } ) db.products.insertMany( [ { name: "Tablet", price: 300, description: "Android tablet" }, { name: "Keyboard", price: 75, description: "Mechanical keyboard" } ] )</code>

このコードは、1つのラップトップドキュメントを挿入し、1つの操作に複数のドキュメント(タブレットとキーボード)を挿入します。 _idフィールドは、提供されていない場合に自動的に生成されます。ドライバー固有の実装は、それぞれのドライバーのinsertOne()またはinsertMany()メソッドを使用して類似しています。

ドキュメントの読み取り:読み取り文書にはfind()を使用してコレクションを照会することが含まれます。特定のドキュメントを取得するためのフィルターを指定できます。例えば:

 <code class="javascript">// Find all products db.products.find() // Find products with price less than 500 db.products.find( { price: { $lt: 500 } } ) // Find a single product by its ID db.products.findOne( { _id: ObjectId("...") } ) // Replace ... with the actual ObjectId</code>

find()はカーソルを返し、結果を繰り返すことができます。 findOne()クエリに一致する単一のドキュメントを返します。繰り返しますが、ドライバーの実装には同等の方法があります。

ドキュメントの更新: MongoDBは、ドキュメントを更新するいくつかの方法を提供します。 updateOne()単一のドキュメントを更新し、 updateMany()は複数のドキュメントを更新します。 $setオペレーターを使用してフィールドを変更します。

 <code class="javascript">// Update the price of a specific product db.products.updateOne( { name: "Laptop" }, { $set: { price: 1300 } } ) // Increase the price of all products by 10% db.products.updateMany( {}, { $inc: { price: { $multiply: [ 0.1, "$price" ] } } } )</code>

最初の例では、ラップトップの価格を更新します。 2番目の例では$incオペレーターを使用して、すべての製品の価格を増やします。より複雑な更新は$push$pull$addToSetなどの他の更新オペレーターを使用して達成できます。

ドキュメントの削除: deleteOne()単一のドキュメントを削除し、 deleteMany()複数のドキュメントを削除します。

 <code class="javascript">// Delete a specific product db.products.deleteOne( { name: "Keyboard" } ) // Delete all products with price greater than 1000 db.products.deleteMany( { price: { $gt: 1000 } } )</code>

これらのコマンドは、提供された基準に基づいてドキュメントを削除します。

Mongodbでの効率的なCRUD運用のためのベストプラクティス

効率的なCRUD操作には、いくつかの要因を慎重に検討する必要があります。

  • インデックス作成:頻繁にクエリされたフィールドでインデックスを作成して、 find()操作をスピードアップします。インデックスは、リレーショナルデータベースのインデックスに似ています。クエリに基づいて、適切なインデックスタイプ(単一フィールド、化合物、地理空間など)を選択します。
  • バッチ操作: insertMany()updateMany() 、およびdeleteMany()を使用して、単一のバッチで複数のドキュメントで操作を実行し、個々の操作と比較してパフォーマンスを大幅に改善します。
  • データモデリング:データモデルを慎重に設計して、共通操作に必要なクエリの数を最小限に抑えます。適切なスキーマ設計では、クエリのパフォーマンスを劇的に改善できます。
  • クエリの最適化:句が遅くなる可能性があるため、 $whereを使用しないでください。代わりに、インデックスを効果的に活用する$gt$lt$inなどのオペレーターを使用します。適切な投影( { _id: 0, name: 1, price: 1 } )を使用して、必要なフィールドのみを取得してデータ転送を削減します。
  • 接続プーリング:接続プーリングを使用してデータベース接続を再利用して、各操作の新しい接続を確立するオーバーヘッドを減らします。ほとんどのドライバーは、組み込みの接続プーリング機能を提供しています。

CRUD操作中の処理エラー

エラー処理は、堅牢なMongoDBアプリケーションでは重要です。ドライバーは、CRUD操作中に例外をキャッチして処理するメカニズムを提供します。

  • Try-Catchブロック: try-catchブロック内でCRUD操作をラップして、ネットワークの問題、無効なデータ、データベースエラーなどの潜在的なエラーを処理します。
  • エラーコード:データベースによって返されたエラーコードを調べて、エラーの原因を決定し、適切なロジックを実装して優雅に処理します。 MongoDBは、詳細なエラーコードドキュメントを提供します。
  • ロギング:デバッグおよび監視のためのログエラー。エラーメッセージ、スタックトレース、失敗した操作などの関連情報を含めます。
  • 再試行メカニズム:一時的なエラーのための再試行メカニズムを実装します(たとえば、ネットワークタイムアウト)。レジリエンスを改善するために、短い遅延の後に失敗した操作を再試行します。

異なるドライバーでCRUD操作を実行します

CRUD操作を実行するための特定の方法は、使用するドライバーによってわずかに異なります。 Node.jsとPythonの簡単な概要を次に示します。

node.js( mongodbドライバーを使用):

 <code class="javascript">const { MongoClient } = require('mongodb'); // ... connection code ... const client = new MongoClient(uri); async function run() { try { await client.connect(); const db = client.db('mydatabase'); const collection = db.collection('products'); // ... CRUD operations using collection.insertOne(), collection.find(), etc. ... } finally { await client.close(); } } run().catch(console.dir);</code>

Python( pymongoドライバーを使用):

 <code class="python">import pymongo # ... connection code ... client = pymongo.MongoClient(uri) db = client['mydatabase'] collection = db['products'] # ... CRUD operations using collection.insert_one(), collection.find(), etc. ... client.close()</code>

どちらの例も基本構造を示しています。利用可能な方法とオプションの詳細については、特定のドライバーのドキュメントを参照してください。 uriのようなプレースホルダーを実際の接続文字列に置き換えることを忘れないでください。

以上がMongoDBでドキュメントを作成、読み取り、更新、削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。