- 更新日: 2017年03月30日
- 公開日: 2016年08月05日
【Windows】今更聞けないMongoDB・基本のCRUD操作と便利ツール
NoSQLの代表格であるMongoDB。RDBMS歴が長いベテランさんでも、名前だけは聞いたことがあるのではないでしょうか?新しい概念を覚えるには少々時間が必要。今更始めるのもどうかと躊躇しているけれど、気軽に少し触ってみたい…という方に向け、操作方法を簡単にご紹介します。
MongoDBの概要・インストールについてはこちらの記事をご参照ください。
【Windows】RDBMS歴が長い人でも大丈夫!MongoDB超入門
※画像はWindows 10、MongoDB 3.2.5のものを使用しています。
MongoDBでCRUD操作
MongoDBでは、データの生成(Create)・読み取り(Read)・更新(Update)・削除(Delete)の各操作をまとめて、CRUD操作と呼びます。以下、CRUD操作の例では下記のテスト環境を使用します。
◆サンプル環境
データベース:testDB
コレクション:testCo
◆サンプルデータ
name | price |
candy | 100 |
chocolate | 200 |
donut | 300 |
muffin | 1000 |
MongoDBで使う主な比較演算子
比較演算子は記号ではなく、下記のように記述します。
データの生成
基本構文:db.<コレクション名>.insert(<内容>)
例:db.testCo.insert( name : "maffin", price : "1000")
例:db.testCo.insert( name : "maffin", price : "1000")
nameが”maffin”、priceが1000のデータが挿入されました。
データの読み取り
例:基本構文:db.<コレクション名>.find(<内容>)db.testCo.find({price:{$gte:300}})
priceが300以上のデータを選択しました。
・and条件で取得db.testCo.find({$and:[{price:{$gte:300}},{name:"maffin"}]})
priceが300以上かつnameが”maffi”のデータを取得しました。
・or条件で取得db.testCo.find({$or:[{price:{$gte:1000}},{name:"donut"}]})
priceが1000以上か、もしくはnameが”donut”のデータを取得しました。
・ソートの指定
基本構文:db.<コレクション名>.find().sort(<ソート対象>:1)db.testCo.find().sort({price:-1})
priceの降順で全データを取得しました。sortメソッドで並び替えの基準となるフィールド、順序を指定します。1は昇順、-1は降順となります。
データの更新
基本構文:db.<コレクション名>.update({内容})
・指定した条件で更新db.testCo.update({name:"maffin"},{$set:{price:500}})
$set
nameが”maffin”のデータのpriceを500に更新しました。
・フィールドを追加
例:db.testCo.update({name:”maffin”},{$set:{price:1000,sall:1}})
nameが”maffin”のデータのpriceを500に更新し、新たなフィールドを追加しました。
・フィールド名を変更db.testCo.update({name:"maffin"},{$rename:{"sall":"sale"}})
$rename
追加したフィールドの名前をsall→saleに変更しました。
・フィールドを削除db.testCo.update({name:"maffin"},{$unset:{sale:""}})
$unset
Saleというフィールドを削除しました。
・複数のドキュメントを更新db.testCo.update({name:"maffin"},{ $set:{ price: 1080 }},{ multi: true})
multi
(事前にnameが”maffin”というデータを2つ作成しています)
nameが”maffin”というデータのpriceをいずれも1080に変更しました。
・ドキュメントが存在すれば更新、存在しなければ挿入db.testCo.update({name:"maffin"},{ $set:{ price: 2000 }},{ upsert: true})
upsert
最初の命令では新規にデータを挿入しています(赤線、赤枠)。同じ命令(priceの値は異なる)を実行した場合、priceが更新されます(オレンジ線、オレンジ枠)。
データの削除
基本構文:db.<コレクション名>.remove()
・複数のドキュメントを削除
例:db.testCo.remove({name:"maffin"},{multi:true})
multi
nameが”maffin”というデータを2件削除しています。
MongoDBを操作するためのツール
Node.js(※1)からMongoDBにアクセスするためのツールがあります。下記に挙げた他にもいくつかあるので、ご自分に合ったものを探してみてください。
MongoExpress
MongoDBをGUIで操作できる管理ツールです。Node.jsおよびexpress(※2)で作られています。
Robomongo
こちらも視覚的に操作できる管理ツール。Windows、MacOS、Linuxに対応しています。
Mongoose
Node.jsからMongoDBを使用するためのモデリングツールです。
\Webサイト担当者としてのスキルが身に付く/
おわりに
始めるのにそれほどハードルは高くない、と思っていただけましたでしょうか?ぜひ一歩踏み出してチャレンジしてみてください!
(※1)Node.js…詳しくはこちらの記事をご参照ください。初心者にもわかりやすく解説!サーバーサイドJavaScript、Node.jsとは?
(※2)express…Node.js上で動作するWebアプリのフレームワーク
- この記事を書いた人
- murase miho