MacでMongoDBメモ

機械学習で大量のデータを扱いにはデータベースが欲しくなります。SQLデータベースは設計が面倒なので今回はNoSQLのMongoDBを選択しました。

設定編

インストール

$ brew update
$ brew install mongodb

データベースの保存先のディレクトリを作る

$ sudo mkdir -p /data/db
$ sudo chown -R 777 /data

/data/dbはデフォルトなのでおすすめです。 777は多分危ないかもしれませんので、正しい権限を教えてください :bow:

起動

サーバー

$ mongod

クライエント

$ mongo
MongoDB shell version: 3.2.9  
connecting to: test  
Welcome to the MongoDB shell.  
For interactive help, type "help".  
For more comprehensive documentation, see  
  http://docs.mongodb.org/
Questions? Try the support group  
  http://groups.google.com/group/mongodb-user

> use mydb
switched to db mydb  
> a = { content: "ほげほげ"  }
{ "content" : "ほげほげ" }
> db.articles.save(a)
WriteResult({ "nInserted" : 1 })  
> db.articles.find()
{ "_id" : ObjectId("57c66c9142b4bc1b24ea7fc7"), "content" : "ほげほげ" }

バックアップ

$ mongodump --out db/dump --db dbname

リストア

$ mongorestore db/dump --db maybe_different_dbname

PythonでMongoDBを使う

いつかのORMが存在しますがmongoengineが一番使いやすいのでmongoengineを使ってみます。

$ pip install mongoengine

モデルの定義

from mongoengine import * 

connect('dbname')

class Article(Document):  
  content = StringField(required=True)

レコード追加

from article import Article

article = Article(content = 'ほげほげ')  
article.save()  

全レコードを1個ずつ読み込み

from article import Article

for article in Article.objects  
  print(article.content)