サーバー、データベース、インフラに関するトピックス
■第17話:MongoDBの基本操作 - CRUDをマスターする
(最終更新日:2023.11.05)
(絵が小さい場合はスマホを横に)
「CRUDを使いこなそう!」
CRUDはデータベースにおける4つの基本的な操作である。
データのライフサイクルに関わり、C(Create)は新たなドキュメント(データ)をコレクションに挿入することを言う。
他にも、R(Read)はデータの読み取り、U(Update)はデータの更新、D(Delete)はデータの削除を意味する。
今回は、MongoDBにおけるCRUD操作について、具体的なコマンドを通して解説する。
1.Create操作
Create操作はデータベースに新しいデータを追加するプロセスだ。MongoDBでは、この操作はドキュメントの追加として実行される。 単一のドキュメントをコレクションに追加するには、insertOne() メソッドを使用する。以下はその基本的な構文である。 Windows版のMongoDBターミナル上で、下記のようにinsertOneというクエリを実行すると、ドキュメントが作られる。 usersコレクションがない場合は、自動的にusersコレクションが作成される。
MongoDBのCreate操作
複数ドキュメントを追加するには、insertMany() メソッドを使用する。以下はその基本的な構文である。 配列を使って一気に3つの新しいドキュメントを追加した。以上がMongoDBのCreate操作になる。
MongoDBの複数追加
2.Read操作
Read操作はデータベースからデータを取得するプロセスである。 MongoDBでは、ドキュメントを検索してデータを読み取る。 コレクション内のドキュメントを検索するには、find()メソッドを用いる。基本的な構文は以下の通りになる。 statusがactiveに相当する3つのドキュメントが表示されている。
MongoDBのRead操作
このコマンドは、ageが24より小さく、statusがactiveであるドキュメントを検索します。 $andを用いることでANDの論理演算子を使うことができ、$ltでより小さいという比較演算子を使うことができる。 24歳未満でactiveな1つのドキュメントがヒットしている。以上がMongoDBのRead操作になる。
Readの複雑な操作
3.Update操作
Update操作はデータベース内の既存データを変更するプロセスだ。MongoDBでは、ドキュメントのフィールドを更新することでこれを実現する。 単一のドキュメントを更新するには、updateOne() メソッドを使用する。このメソッドでは、最初にマッチするドキュメントが更新される。 以下はその基本的な構文になる。 nameにAliceを指定し、そのstatusをinactiveに変更した。
MongoDBのUpdate操作
複数のドキュメントを一度に更新するには、updateMany() メソッドを使用する。以下はその基本的な構文になる。 このコマンドは、statusがactiveのものを検索し、それらを全てinactiveに更新する。
複数Update操作
Updateには、他にも$incを使って値を1増加させたり、配列に要素を追加する命令もある。 必要になったら、その都度調べて実行してみよう。
4.Delete操作
Delete操作はデータベースからデータを削除するプロセスだ。MongoDBでは、ドキュメントを削除することでこれを実現する。 単一のドキュメントを削除するには、deleteOne() メソッドを使用する。 このメソッドは、条件に最初に一致した単一のドキュメントを削除する。以下はその基本的な構文である。 先ほどまであった、Bobのドキュメントがなくなっていることが分かると思う。
MongoDBのDelete操作
複数のドキュメントを削除するには、deleteMany() メソッドを使用する。以下はその基本的な構文である。 正規表現を用いて、名前でCが付く人(大文字、小文字区別無く)を削除する条件にしているので、 AliceとCharlieが削除対象になる。よって、コレクション内にはJohn Doeだけが残る。
複数Delete操作
5.まとめ
今回、MongoDBのCRUDを紹介した。
CRUDはデータベース操作の基本であり、絶対に抑えておきたい部分だ。
実際にWebアプリケーションで使う場合、Djangoなどのフレームワークと合わせて使うことになる。
その際にORMを用いることもできるが、
複雑な操作を行う場合は、pymongoをインストールして今回紹介したCRUD操作を直接行う必要も出てくる。
また、サーバー上でバッチ処理を行う場合も、直接CRUD操作する機会は出てくるだろう。
クエリはデーターベースの基本となる。ある程度は使えるようにしておこう。
▼参考図書、サイト
MongoDB
MongoDB公式サイト