MongoDBについて
MongoDBは、NoSQLの一種でドキュメント型と呼ばれるデータベース。
オープンソースとして公開されている。
柔軟なデータ構造と高い書き込み性能、使いやすさが特徴。
1つのデータベースは複数のコレクションを持ち、
1つのコレクションは複数のドキュメントを持つ。
有名な無料資料があるみたい。
mongodbの薄い本
| RDB | MongoDB |
|---|---|
| テーブル構造 | JSON形式 |
| SQL文 | Mongoクエリ |
| データベース | データベース |
| テーブル | コレクション |
| レコード | ドキュメント |
| フィールド(カラム) | フィールド |
| インデックス | インデックス |
| Primary key | _id |
インストール手順
ダウンロードページにアクセス
https://www.mongodb.org/dl/linux/x86_64
最新バージョン(mongodb-linux-x86_64-x.x.x.tgz) のダウンロードリンクをコピー
http://downloads.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz
mkdir -p $HOME/src mkdir -p $HOME/local/mongodb4.0.9 cd $HOME/src wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz # コピーしたリンク tar xvzf mongodb-linux-x86_64-4.0.9.tgz rsync -av mongodb-linux-x86_64-4.0.9/ $HOME/local/mongodb4.0.9/ #sudo vim /etc/profile.d/mongo.sh #export MONGO_HOME=/usr/local/mongo #export PATH=$PATH:$MONGO_HOME/bin echo 'export MONGO_HOME=$HOME/local/mongodb4.0.9/' | sudo tee /etc/profile.d/mongo.sh echo 'export PATH=$PATH:$MONGO_HOME/bin' | sudo tee -a /etc/profile.d/mongo.sh sudo mkdir -p /data/db sudo chown: /data/db sudo chmod 777 /data/db mongod
補足
/etc/profile.d/ はアプリケーションごとのbashを配置するディレクトリらしい。
bashの実行順序
1. /etc/profileを実行
2. /etc/profileによって、/etc/profile.dディレクトリ配下のすべてのファイルを実行
3. ログインユーザーのホームディレクトリにある~/.bash_profileを実行
4. ~/.bash_profileによって、~/.bashrcを実行
5. ~/.bashrcによって、/etc/bashrcを実行
MongoDBの基本操作
# MongoDBのコンソールに接続
mongo
# DBを表示
show dbs
# show databases でもおk
# DBを作成
use game
# Collectionを表示
show collections
# show tables でもおk
# DBを削除
db.dropDatabase()
# DBの構成を表示
db.stats()
# コレクションの作成
db.createCollection('release')
# コレクションの削除
db.release.drop()
# インサート
db.release.insert({'title': 'ASTRO BOT:RESCUE MISSION', 'platform': 'PS4', 'release_date': '2018-10-04 00:00:00'})
db.release.insertMany([
{'title': 'The Legend of Zelda: Breath of the Wild', 'platform': 'Switch', 'release_date': '2017-03-03 00:00:00'},
{'title': 'Super Mario Odyssey', 'platform': 'Switch', 'release_date': '2017-10-27 00:00:00'},
])
# 削除
db.release.remove({'title': 'Super Mario Odyssey'})
# セレクト
db.release.find()
# アップデート
db.release.update( { 'title':'The Legend of Zelda: Breath of the Wild' }, { $set:{ 'title': 'Zelda Breath of the Wild' } } )
PyMongoの使い方
MongoDBの接続にPyMongoを使ってみる。
MongoDB公式のPythonバインディングらしい。
インストールはこれだけ pip install pymongo
from pymongo import MongoClient
# 27017はデフォルトポートなので省略化
client = MongoClient('localhost', 27017)
# game database を作成
db = client.game
# db = client['game'] # 属性で表せない名前の場合は、dictのスタイルでも可能
# release table を作成
collection = db.release
# collection = db['release']
# インサート
collection.insert_one({'title': 'ASTRO BOT:RESCUE MISSION', 'platform': 'PS4', 'release_date': '2018-10-04 00:00:00'})
collection.insert_many([
{'title': 'The Legend of Zelda: Breath of the Wild', 'platform': 'Switch', 'release_date': '2017-03-03 00:00:00'},
{'title': 'Super Mario Odyssey', 'platform': 'Switch', 'release_date': '2017-10-27 00:00:00'},
])
# find()メソッドですべてのドキュメントを取得するためのCursorオブジェクトを取得できる
# すべてのドキュメントには_idフィールドが自動で付与される(ObjectIdと呼ばれる12バイトの識別子)
collection.find()
# Cursorオブジェクトはfor文で順次アクセスできる
for platform in collection.find():
print(platform)
# platformフィールドが'Switchであるドキュメントにマッチ
for platform in collection.find({'platform': 'Switch'}):
print(platform)
# find_one()メソッドは条件にマッチする最初のドキュメントを取得する
collection.find_one()
# find()と同様に引数にクエリを指定できる
collection.find_one({'platform': 'PS4'})

コメント