ホーム » データベース » 『MongoDBの薄い本』1章と2章

『MongoDBの薄い本』1章と2章

以前、monogoDBはインストールしてたのですが、実際に動かしてみたくなったので、『MongoDBの薄い本』を元にちょっと試してみようと思います。環境はMacOSです。

インストールと起動

  1. インストールしたzipを解凍していい場所に置く。
  2. いい場所/mongodb.xx/bin フォルダを開き、mongodb.config というテキストを作成する
  3. mongodb.config に記入する
    dbpath=/Library/mongodb/data
    
  4. 指定したdbpathを作成しておく
  5. mongodを起動する
    cd /Users/USER/workspace/mongodb-osx-x86_64-2.0.6/bin
    mongod --config mongodb.config
    Fri Jul 13 10:22:55 [initandlisten] MongoDB starting : pid=7781 port=27017 dbpath=/Library/mongodb/data 64-bit host=MyMBP.local
    Fri Jul 13 10:22:55 [initandlisten] db version v2.0.6, pdfile version 4.5
    Fri Jul 13 10:22:55 [initandlisten] git version: e1c0cbc25863f6356aa4e31375add7bb49fb05bc
    Fri Jul 13 10:22:55 [initandlisten] build info: Darwin erh2.10gen.cc 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_40
    Fri Jul 13 10:22:55 [initandlisten] options: { config: "mongodb.config", dbpath: "/Library/mongodb/data" }
    Fri Jul 13 10:22:55 [initandlisten] journal dir=/Library/mongodb/data/journal
    Fri Jul 13 10:22:55 [initandlisten] recover : no journal files present, no recovery needed
    Fri Jul 13 10:22:55 [websvr] admin web console waiting for connections on port 28017
    Fri Jul 13 10:22:55 [initandlisten] waiting for connections on port 27017
    db.version()
    Fri Jul 13 10:23:55 [clientcursormon] mem (MB) res:14 virt:2416 mapped:0
    
  6. 新しいターミナルウィンドウを開いて、mongoを起動する。
    cd /Users/USER/workspace/mongodb-osx-x86_64-2.0.6/bin
    mongo</pre>
    MongoDB shell version: 2.0.6
    connecting to: test
    > db.help()
    DB methods:
     db.addUser(username, password[, readOnly=false])
     db.auth(username, password)
    ...
    
    db.fsyncLock() flush data to disk and lock server for backups
     db.fsyncUnock() unlocks server following a db.fsyncLock()
    <pre>
  7. mongodにはconnectionが表示され、接続できている事が確認できる。
    connection accepted from 127.0.0.1:51959 #1
    

で、つまりmongodbが動いてるわけです!お手軽!!

CRUD

  • Create : insert(ドキュメント)
  • Read : find(検索)
  • update : update(検索, 更新内容, upsertフラグ, 複数同時更新フラグ)
  • delete : remove()

insertで面白いのは、1回めに登録したドキュメントと2回目に登録したドキュメントのフィールドが異なっていても、すらりと登録できてしまうところですね。つい、テーブル/カラムの関係で考えると、何が起こったんだ?ぐらいの自由度を感じられます。

updateは、うっかり使うと落とし穴にはまることが紹介されてます。
1つめの引数で検索して2つめの引数で更新するというのは、どういう仕様なんでしょうね。使いどころがわかりませんが・・・。なので、部分的に更新したい場合は必ず、[更新内容]に $setで指定する必要があるみたいです。ん〜。
3つめの引数がupsertフラグ(update+insert)になっていて、データがなければinsert、あればupdateと。カユいところに手が届く系ですね。これをRDBSで普通にやると一手間いるので、ありがたい!
4つめの引数が・・・まとめて更新したい場合は引数を一つ増やさないといけない!デフォルトは1ドキュメントのみ!んん〜、これも逆にそれが入り用な時もあるので、おもろいのう。はまりそうだww

# 1行しか更新されない
> db.unicorns.update({}, {$set: {vaccinated: true }});
# 全体を更新する
> db.unicorns.update({}, {$set: {vaccinated: true }}, false, true);
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中