- NoSQLのデータベース
- Document指向データベース
- C++で記述されている
- データをJSONライクな形式で管理する
- RDBのように固定的なフィールド定義をもたない
インストール
Mac OSにインストールします。
$ brew update $ brew install mongodb
起動
$ ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistmongdデーモンがlistenしていることを確認。
$ lsof -i -nP | grep $(pgrep mongod) mongod 2074 kenjih 6u IPv4 0xc2212eb1f557f05 0t0 TCP 127.0.0.1:27017 (LISTEN)
語句
基本的な語句をRDBとの対比で。
MongoDB | RDB |
コレクション | テーブル |
ドキュメント | レコード |
サンプル実行
基本的なCRUD処理のサンプル。
$ mongo > // ドキュメント登録 > db.employees.save({name:"Taro Yamada",age:20,job:"Engineer",email:"taro_yamada@test.co.jp"}) WriteResult({ "nInserted" : 1 }) > db.employees.save({name:"Hanako Suzuki",age:30,job:"Manager",email:"hanako_suzuki@test.co.jp"}) WriteResult({ "nInserted" : 1 }) > > // コレクション内の全ドキュメント取得 > db.employees.find() { "_id" : ObjectId("56a327228881c1ea39a5e261"), "name" : "Taro Yamada", "age" : 20, "job" : "Engineer", "email" : "taro_yamada@test.co.jp" } { "_id" : ObjectId("56a327308881c1ea39a5e262"), "name" : "Hanako Suzuki", "age" : 30, "job" : "Manager", "email" : "hanako_suzuki@test.co.jp" } > > // キーワード指定検索(完全一致) > db.employees.find({name:"Taro Yamada"}) { "_id" : ObjectId("56a327228881c1ea39a5e261"), "name" : "Taro Yamada", "age" : 20, "job" : "Engineer", "email" : "taro_yamada@test.co.jp" } > > // キーワード指定検索(Like) > db.employees.find({email:/test.co.jp/}) { "_id" : ObjectId("56a327228881c1ea39a5e261"), "name" : "Taro Yamada", "age" : 20, "job" : "Engineer", "email" : "taro_yamada@test.co.jp" } { "_id" : ObjectId("56a327308881c1ea39a5e262"), "name" : "Hanako Suzuki", "age" : 30, "job" : "Manager", "email" : "hanako_suzuki@test.co.jp" } > > // 1件のみ取得 > db.employees.findOne({email:/test.co.jp/}) { "_id" : ObjectId("56a327228881c1ea39a5e261"), "name" : "Taro Yamada", "age" : 20, "job" : "Engineer", "email" : "taro_yamada@test.co.jp" } > > // ドキュメント件数取得 > db.employees.count({age: {$lt: 30}}) // 30歳未満 1 > > // ドキュメント更新 > db.employees.update({'name':'Taro Yamada'}, {$set: { age: 21}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > > // ドキュメント削除 > db.employees.remove({}) WriteResult({ "nRemoved" : 2 }) > > // コレクション削除 > db.employees.drop() true >
0 件のコメント:
コメントを投稿