この記事では、MongoDBでCreate、読み取り、更新、削除(CRUD)操作を実行しています。 INSERTONE()、find()、updateone()、deleteone()、およびインデックス、バッチオペラティオなどの効率的な操作のためのベストプラクティスなどの方法を使用してカバーします
このセクションでは、MongoDBで作成、読み取り、更新、削除(CRUD)操作を実行する方法について詳しく説明しています。 「製品」という名前のコレクションの例を使用して、 _id
、 name
、 price
、および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>
これらのコマンドは、提供された基準に基づいてドキュメントを削除します。
効率的なCRUD操作には、いくつかの要因を慎重に検討する必要があります。
find()
操作をスピードアップします。インデックスは、リレーショナルデータベースのインデックスに似ています。クエリに基づいて、適切なインデックスタイプ(単一フィールド、化合物、地理空間など)を選択します。insertMany()
、 updateMany()
、およびdeleteMany()
を使用して、単一のバッチで複数のドキュメントで操作を実行し、個々の操作と比較してパフォーマンスを大幅に改善します。$where
を使用しないでください。代わりに、インデックスを効果的に活用する$gt
、 $lt
、 $in
などのオペレーターを使用します。適切な投影( { _id: 0, name: 1, price: 1 }
)を使用して、必要なフィールドのみを取得してデータ転送を削減します。エラー処理は、堅牢なMongoDBアプリケーションでは重要です。ドライバーは、CRUD操作中に例外をキャッチして処理するメカニズムを提供します。
try-catch
ブロック内で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 サイトの他の関連記事を参照してください。