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'})
コメント