MongoDBでのCRUD操作:例を含むチュートリアル

公開: 2020-02-05

Webの継続的な進化に伴い、MongoDBやその他のドキュメントオブジェクトデータベースが、従来のSQLベースのデータベースに代わるものとしてどのように登場しているかがわかります。 これらのドキュメントオブジェクトデータベースにはSQLデータベースに比べていくつかの利点があり、これらすべての利点の中で最も顕著なものには、スケーラビリティと敏捷性が含まれます。

MongoDBのデータは、バイナリエンコードされたJSON(BSON)ドキュメント形式で保存されることに注意してください。 この形式では、埋め込まれたドキュメントの配列を保持する必要がある場合があります。 ドキュメントはMongoDBでレコードを形成します。これは、値とフィールドのペアから作成された構造です。

次に、MongoDBでの作成、更新、取得、削除操作またはCRUD操作について説明します。 これらの関数は、MongoDBのデータ変更関数として大まかに分類できます。 これらは、単一のコレクションにのみ使用できます。 Insertは、データベースにデータを追加するために使用できるMongoDBの関数です。

目次

MongoDBのCRUD操作のリスト

1.ドキュメントの作成

MongoDBを使用してオブジェクトをどのように作成しますか? MongoDBは、ストレージにBSON(JSONのバイナリ表現)を使用します。 したがって、データベースでさまざまな操作を実行するために使用されるメソッドは、JavaScriptと何らかの関係があることを理解するのは非常に簡単です。 ユーザーとユーザーのコレクションを作成しましょう。 SQLのテーブルはMongoDBのコレクションと同等であることに注意することも重要です。
db.users.save({name:” Mike”、job:” doctor”、email:” [email protected]”})
この例では、MongoDB save()を使用してデータをコレクションに保存します。

2.ドキュメントの挿入

  • バッチ挿入:この機能を使用すると、ドキュメントのリストをデータベースに同時に追加できます。 バッチには、特定の時点で、数百または数千ものドキュメントが含まれる場合があります。 複数のドキュメントを挿入する機能を備えたこの機能は、他の挿入機能よりもはるかに高速に機能します。 バッチ挿入では、数百または数千のドキュメントに対する個別の要求を出す必要はありません。 代わりに、1つの伝送制御プロトコル(TCP)要求として機能します。 ヘッダー処理アクティビティが含まれないため、挿入にかかる時間は常に大幅に短縮されます。 挿入する必要のあるすべてのドキュメントには、実行する必要のある操作をデータベースに伝えるヘッダーが含まれています。 ほとんどの場合、バッチ挿入はセンサーデータとサーバーログを保持するために使用されます。
  • Mongoimport :Mongoimportは、MySQL、Oracle、またはその他のリレーショナルデータベース管理システム(RDBMS)からの重要なデータへのバッチ挿入の代わりに使用されるコマンドラインツールです。 MongoDBに保存する前に、ドキュメントに変更を加えたり、カスタムIDを追加したりする必要がある場合があります。 知っておくべきもう1つの重要なことは、MongoDBは16MBの重いメッセージしか受け入れないということです。 したがって、バッチ挿入では、メッセージの数に制限があります。
  • 順序付けされていない一括挿入:この関数では、MongoDBは順序に従わずに操作を書き込みます。 エラーが発生した場合は、書き込み操作が中断されることなく続行されます。 MongoDBは、実行中に順序付けられていない操作のグループを形成します。 MongoDBは、実行前にリストされた操作を並べ替えることで、パフォーマンスの向上を求めることもできます。 したがって、一括挿入でこの関数を検討する場合、アプリケーションはシーケンスに依存する必要はありません。 Bulk.getOperations()を使用して、MongoDBが一連の操作をグループ化し、それらを実行する方法を確認できます。 このコマンドを使用すると、3つのドキュメントを同時に追加できますが、順序はありません。
  • 順序付き一括挿入:この関数では、MongoDBは操作を書き込むときにシーケンスに従います。 書き込み操作中にエラーが発生すると、MongoDBは他の書き込み操作を実行しなくなります。 順序付けられた操作は、その継続性とタイプを考慮してグループ化されます。 同じクラスに属する隣接する順序付けられた操作がグループ化されます。

たとえば、順序付きリストに1つの挿入操作、削除操作、2つの更新操作がある場合、MongoDBはこれらをスタックするために3つのグループを作成します。 グループ1は、1回の挿入操作で構成されます。 2番目のグループには1つの削除操作があります。 3番目のグループは、2つの更新操作をまとめます。

MongoDBの将来のエディションでは、この動作に適切に対処することが期待されています。 順序付けされたバルクリストの各グループは、1000を超える操作を持つことはできません。 数がその最大制限を超える場合、MongoDBは、この制限に準拠するために、1000操作以下の小さなグループを作成します。 したがって、7000の注文されたバルク操作がある場合、それぞれが1000のバルク操作で構成される7つのグループがあります。 グループ化と実行がどのように行われるかを確認するには、最初に一括挿入コマンドを実行してから、Bulk.getOperationsコマンドを使用します。 このコマンドを使用して、3つのドキュメントを順番に追加できます。

3.ドキュメントの取得/読み取り

MongoDBのすべてのクエリは、特定のドキュメントに送信されます。 MongoDBは、クエリで定義された条件に基づいてドキュメントを識別し、それらのドキュメントを目的の宛先に返します。 ドキュメント検索クエリには、返される必要のあるドキュメントのフィールドと一致する条件または基準に言及するプロジェクションを含めることができます。

クエリを変更して、スキップ、制限、並べ替えの順序を設定できます。

ここで、等式条件がどのように指定されるかについて説明します。 findOne()コマンドを使用して、ドキュメントの最初のレコードを識別します。 結果を適切な形式で表示するには、prettyメソッドを使用できます。

db.items.find()。pretty()クエリを使用して、コレクションにリストされているすべてのドキュメントを識別し、それらすべてを標準化された形式で表示します。 空のクエリを使用してすべてのドキュメントを選択できます– db.items.find({})–このクエリの最後には空のクエリ句があります–コレクションにリストされているすべてのドキュメントを識別します。

クエリドキュメントでfindメソッドを指定しない場合と、空のクエリを使用する場合は、どちらも同じ結果になります。 したがって、db.items.find({})クエリとdb.items.find()クエリは、それらが使用される結果に関して同等です。

クエリを操作してクエリカーソルメソッドを使用できますが、countメソッドを使用すると、クエリに一致するコレクション内のドキュメントの数を見つけることができます。 db.items.count()

4.ドキュメントの更新

MongoDBのドキュメントを更新するには、update()メソッドを使用する必要があります。 updateメソッドには、クエリと更新という2つの重要な要素があります。 クエリパラメータが最初に来て、次に更新パラメータが続きます。 これが例です

db.users.update({name:” Mike”}、{age:32})

ただし、これは値のペア(この場合は年齢)を更新する正しい方法ではありません。 これにより、ドキュメント内のすべてを上書きします。 時代に残る唯一のもの。 したがって、ドキュメント全体で1つの値のペアを更新する必要がある場合は、いくつかのキーワードを使用する必要があります。

db.users.update({name:“ Mike”}、{$ set:{age:28}})

これは何も上書きしません。 ドキュメントに含まれるすべての情報を保持します。 年齢の値のみが更新されます。

5.ドキュメントの削除

コレクションからドキュメントを削除するには、removeメソッド(db.courses.remove())を使用します。 このコマンドは、指定されたコレクションからすべてのドキュメントを削除します。 削除されないのは、インデックスとコレクション自体です。 場合によっては、removeコマンドがパラメーターとしてクエリを受け取ることがあります。 クエリに記載されている条件に一致するドキュメントを削除する場合は、db.items.remove({“ item”:“ Pen”)コマンドを使用します。

コレクションから1つのドキュメントのみを削除するには、db.items.remove({” item”:“ Bag}、1)コマンドを使用します。 すべてのドキュメント、コレクション、およびインデックスを削除するには、db.courses.drop()コマンド(dropメソッド)を使用します。

結論

ビッグデータについて詳しく知りたい場合は、ビッグデータプログラムのソフトウェア開発スペシャライゼーションのPGディプロマをチェックしてください。このプログラムは、働く専門家向けに設計されており、7つ以上のケーススタディとプロジェクトを提供し、14のプログラミング言語とツール、実践的なハンズオンをカバーしています。ワークショップ、トップ企業との400時間以上の厳格な学習と就職支援。

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

データ主導の技術革命をリードする

400時間以上の学習。 14言語とツール。 IIIT-B同窓生ステータス。
IIITバンガロアからのビッグデータの高度な証明書プログラム