MongoDBは、2007年にDwightMerrimanとEliotHorowitzが、DoubleClickとして知られる自社でエンタープライズWebアプリケーションを開発しているときに、リレーショナルデータベースでスケーラビリティの問題を経験したときに最初に開発されました。開発者の1人によると、その名前は巨大なという言葉に由来しています。 大量のデータを処理するというアイデアをサポートするため。
同社が商用サポートサービスを提供している間、データベースは2009年にオープンソースプロジェクトになりました。多くの企業がそのユニークな機能のためにMongoDBを採用しました。これらの会社の1つはニューヨークタイムズ紙で、このデータベースを使用して、写真を送信するためのWebベースのアプリケーションを構築しました。 2013年、DoubleClickは正式にMongoDBInc.に名前を変更しました。
MongoDBコンポーネント
コアMongoDBコンポーネントとその使用法は次のとおりです。
- コレクション– それらのRDBMSの対応物はテーブルです。これらはMongoDBドキュメントのセットです
- ドキュメント– そのRDBMSの対応物はRowです。これは、BSON形式で保存されたデータのコレクションです
- フィールド– これは、フィールドと値のペアとして値を含むMongoDBドキュメントの単一の要素です。
ドキュメントベースのストレージ
ドキュメントは、JSONのような名前と値のペアを持つデータ構造であり、MongoDBドキュメントを使用して任意のプログラミング言語のカスタムオブジェクトを簡単にマッピングできます。たとえば、学生 オブジェクトには、 name、studentid、などの属性があります および件名 ここで、主題はリストです。 MongoDBの学生向けのドキュメントは次のようになります:
{
Name: "Michael",
Studentid: 1
Subjects: ["Mathematics, English, Geography"]}
ドキュメントは、上記の表現からのカスタムオブジェクトのJSON表現であることがわかります。また、ドキュメント内に配列とドキュメント(埋め込み)の形式でデータを保存することにより、過度の結合を回避します。
MongoDBのドキュメントを更新する
MongoDBは更新()を提供します コレクションのドキュメントを更新するために使用されるコマンド。コマンドの基本的なパラメータは、ドキュメントを更新する必要がある条件と、実行する必要がある変更です。ユーザーは、更新ステートメントに基準を追加して、選択したドキュメントのみを更新できます。以下の例は、ドキュメント内の単一の値の更新がどのように行われるかを示しています。
- updateOneを入力します コマンド。
- 更新するドキュメントを決定するために使用する条件を選択します。たとえば、作成者と記事でドキュメントを更新します。
- セットを使用します コマンドを使用してフィールド名を変更し、変更するフィールド名を選択してから、以下に示すように新しい値を入力します。
db.fossdb.updateOne(
{ item: "article" },
{
$set: { "foss": "fosslinux", author: "Abraham" },
$currentDate: { lastModified: true }
}
)
出力:
注: 「use」コマンドを使用して、正しいデータベースを選択してください。たとえば、私は「fossdb」を使用しています。したがって、適切なデータベースを選択するには、以下のコマンドを実行します。
use fossdb
出力:
出力には、1つのレコードが条件に一致したことが示されるため、ドキュメント内の関連するフィールド値が変更されます。
MongoDBで一括ドキュメントを同時に更新するには、デフォルトで一度に1つのドキュメントしか変更されないため、ユーザーはマルチオプションを使用する必要があります。以下のコードは、ユーザーが同時に多くのドキュメントを更新する方法を示しています。
- 最初に、著者が「Abraham」であるドキュメントを見つけ、著者名を「Abraham」から「Masai」に変更します。次に、 updateManyを発行します コマンド。
- 次に、条件を選択して、変更するドキュメントを決定します。前述のように、「作成者」の名前のドキュメントを使用します。
- 更新するフィールド名を選択し、それに応じて新しい値を入力します。
db.fossdb.updateMany(
{ "articles": { $lt: 50 } },
{
$set: { "foss": "fosslinux", authors: "Masai" },
$currentDate: { lastModified: true }
}
)
出力:
このコマンドを正常に実行すると、1つのレコードが条件に一致したため、関連するフィールドが変更されたことが出力に示されます。
ユーザーがMongoDBを選択する理由
ユーザーがMongoDBの使用を開始する必要がある理由は次のとおりです。
ドキュメント指向
このデータベースはNoSQLタイプのデータベースであるため、データはリレーショナルタイプ形式のデータではなく、ドキュメントに格納されます。これにより、このデータベースは非常に柔軟になり、実際の状況や要件に適応できるようになります。
アドホッククエリ
MongoDBでは、フィールドによる検索、クエリ、および正規表現の検索がサポートされています。したがって、クエリを実行して、ドキュメント内の特定のフィールドを戻すことができます。
インデックス作成
MongoDBのインデックスは、データベース内の検索のパフォーマンスを向上させるために作成されます。
負荷分散
MongoDBは、シャーディングを使用して、データを複数のMongoDBインスタンスに分割することにより、水平方向にスケーリングします。
複製
このデータベースは、レプリカセットで高可用性を提供します。各レプリカセットは、2つ以上のMongoDBインスタンスで構成されています。レプリカセットのメンバーは、いつでもプライマリレプリカまたはセカンダリレプリカの役割を果たすことができます。プライマリレプリカは、クライアントと対話し、すべての読み取り/書き込み操作を実行する中央サーバーです。対照的に、セカンダリレプリカは、組み込みのレプリケーションデータを使用してプライマリレプリカのコピーを維持します。
MongoDBでのデータモデリング
上記の説明から、MongoDBのデータには柔軟なスキーマがあります。 MongoDBのコレクションは、ユーザーがデータを挿入する前にテーブルのスキーマを宣言する必要があるSQLデータベースとは異なり、ドキュメント構造を強制しません。この種の柔軟性が、MongoDBを非常に強力なものにしているのです。
MongoDBでデータをモデリングする場合、ユーザーは次の点に注意する必要があります。
- データ取得パターン –クエリを頻繁に使用する場合、ユーザーはデータモデルでインデックスを使用してクエリの効率を向上させることを検討する必要があります。
- アプリケーションのニーズ –ユーザーは、アプリケーションのビジネスニーズを確認し、アプリケーションに必要なデータとデータの種類を確認する必要があります。
- データベースは頻繁に変更されていますか? –ユーザーは、MongoDB環境全体の効率を向上させるために、インデックスの使用を再検討するか、必要に応じてデータモデリング設計にシャーディングを組み込む必要があります。
結論
この記事では、現在市場に出回っているウイルスデータベースであるMongoDBについて簡単に分析しました。さらに、MongoDBの既存のドキュメントを更新する方法についても説明しました。この記事がMongoDBの理解に役立つことを願っています。問題が発生した場合は、コメントセクションからご連絡いただければ、すぐにご連絡いたします。