【Windows】今更聞けないMongoDB・基本のCRUD操作と便利ツール



【Windows】今更聞けないMongoDB・基本のCRUD操作と便利ツール

NoSQLの代表格であるMongoDB。RDBMS歴が長いベテランさんでも、名前だけは聞いたことがあるのではないでしょうか?新しい概念を覚えるには少々時間が必要。今更始めるのもどうかと躊躇しているけれど、気軽に少し触ってみたい…という方に向け、操作方法を簡単にご紹介します。

MongoDBの概要・インストールについてはこちらの記事をご参照ください。

【Windows】RDBMS歴が長い人でも大丈夫!MongoDB超入門

※画像はWindows 10、MongoDB 3.2.5のものを使用しています。

目次
  1. MongoDBでCRUD操作
  2. MongoDBで使う主な比較演算子
  3. データの生成
  4. データの読み取り
  5. データの更新
  6. データの削除
  7. MongoDBを操作するためのツール
  8. MongoExpress
  9. Robomongo
  10. Mongoose
  11. おわりに

MongoDBでCRUD操作

MongoDBでは、データの生成(Create)・読み取り(Read)・更新(Update)・削除(Delete)の各操作をまとめて、CRUD操作と呼びます。以下、CRUD操作の例では下記のテスト環境を使用します。

◆サンプル環境
データベース:testDB
コレクション:testCo

◆サンプルデータ

name price
candy 100
chocolate 200
donut 300
muffin 1000

MongoDBで使う主な比較演算子

比較演算子は記号ではなく、下記のように記述します。

$eq ~同じ = $gt ~より大きい > $gte ~以上 >= $lt ~より小さい(未満)< $lte ~以下 <= $ne ~と同じでない <> != $in ~の範囲内 $nin ~の範囲外

データの生成

基本構文:db.<コレクション名>.insert(<内容>)

例:db.testCo.insert( name : "maffin", price : "1000")

image

例:db.testCo.insert( name : "maffin", price : "1000")

insert

nameが”maffin”、priceが1000のデータが挿入されました。

データの読み取り

例:基本構文:db.<コレクション名>.find(<内容>)db.testCo.find({price:{$gte:300}})

find

priceが300以上のデータを選択しました。

・and条件で取得db.testCo.find({$and:[{price:{$gte:300}},{name:"maffin"}]})

find_and

priceが300以上かつnameが”maffi”のデータを取得しました。

・or条件で取得db.testCo.find({$or:[{price:{$gte:1000}},{name:"donut"}]})

find_or

priceが1000以上か、もしくはnameが”donut”のデータを取得しました。

・ソートの指定

基本構文:db.<コレクション名>.find().sort(<ソート対象>:1)db.testCo.find().sort({price:-1})

find_sort

priceの降順で全データを取得しました。sortメソッドで並び替えの基準となるフィールド、順序を指定します。1は昇順、-1は降順となります。

データの更新

基本構文:db.<コレクション名>.update({内容})

・指定した条件で更新db.testCo.update({name:"maffin"},{$set:{price:500}})$set

update

nameが”maffin”のデータのpriceを500に更新しました。

・フィールドを追加

例:db.testCo.update({name:”maffin”},{$set:{price:1000,sall:1}})update_add

nameが”maffin”のデータのpriceを500に更新し、新たなフィールドを追加しました。

・フィールド名を変更db.testCo.update({name:"maffin"},{$rename:{"sall":"sale"}})$rename

update_rename

追加したフィールドの名前をsall→saleに変更しました。

・フィールドを削除db.testCo.update({name:"maffin"},{$unset:{sale:""}})$unset

update_field_del

Saleというフィールドを削除しました。

・複数のドキュメントを更新db.testCo.update({name:"maffin"},{ $set:{ price: 1080 }},{ multi: true})multi

update_multi

(事前にnameが”maffin”というデータを2つ作成しています)

nameが”maffin”というデータのpriceをいずれも1080に変更しました。

・ドキュメントが存在すれば更新、存在しなければ挿入db.testCo.update({name:"maffin"},{ $set:{ price: 2000 }},{ upsert: true})upsert

upsert

最初の命令では新規にデータを挿入しています(赤線、赤枠)。同じ命令(priceの値は異なる)を実行した場合、priceが更新されます(オレンジ線、オレンジ枠)。

データの削除

基本構文:db.<コレクション名>.remove()

・複数のドキュメントを削除

例:db.testCo.remove({name:"maffin"},{multi:true})multi

remove_multi

nameが”maffin”というデータを2件削除しています。

MongoDBを操作するためのツール

Node.js(※1)からMongoDBにアクセスするためのツールがあります。下記に挙げた他にもいくつかあるので、ご自分に合ったものを探してみてください。

MongoExpress

mongoexpress

公式サイト

MongoDBをGUIで操作できる管理ツールです。Node.jsおよびexpress(※2)で作られています。

Robomongo

robomongo

公式サイト

こちらも視覚的に操作できる管理ツール。Windows、MacOS、Linuxに対応しています。

Mongoose

mongoose

公式サイト

Node.jsからMongoDBを使用するためのモデリングツールです。

おわりに

始めるのにそれほどハードルは高くない、と思っていただけましたでしょうか?ぜひ一歩踏み出してチャレンジしてみてください!

(※1)Node.js…詳しくはこちらの記事をご参照ください。初心者にもわかりやすく解説!サーバーサイドJavaScript、Node.jsとは?

(※2)express…Node.js上で動作するWebアプリのフレームワーク

関連記事

murase miho
この記事を書いた人
murase miho
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp