Ruby で MongoDB を使ってみる
前準備
Ubuntu での mongodb のインストール: 別ページ »で説明
パッケージのインストールと mongod の起動
- gem を使って mongo と mongo_ext をインストール
sudo gem install mongo sudo gem install mongo_ext sudo gem install bson_ext
- mongod の起動
mongod
Ruby プログラム例
- データベースへの接続
接続するデータベース名: mydb
require 'rubygems' require 'mongo' require 'bson' conn = Mongo::Connection.new('localhost') conn.database_names db = conn.db('mydb')
- コレクションの一覧
db.collection_names
- ドキュメントの挿入
c = db.collection('complete') c.insert({:name => "Database", :score => "80", :student_name => "KK"}) c.insert({:name => "Database", :score => "95", :student_name => "AA"}) c.insert({:name => "Database", :score => "80", :student_name => "LL"}) c.insert({:name => "Programming", :score => "85", :student_name => "KK"}) c.insert({:name => "Programming", :score => "75", :student_name => "LL"})
上のプログラム例は、次のようなコレクションを作っている
name | score | student_name -------------------------------------- Database | 80 | KK Database | 95 | AA Database | 80 | LL Programming | 85 | KK Programming | 75 | LL
- ドキュメントの一覧
c = db.collection('complete') c.find.each { |row| p row.inspect }
- ドキュメントの一覧(ソートして表示)
c = db.collection('complete') c.find.sort(:score).each { |row| p row.inspect }
- ドキュメントの条件検索
c = db.collection('complete') c.find( 'student_name' => 'LL' ).each { |row| p row.inspect } c.find( 'student_name' => 'KK' ).each { |row| p row.inspect }
- ドキュメントの条件検索(範囲指定)
書きかけ
c = db.collection('complete') c.find('score' => {'$gt' => 80}).each{ |row| puts row.inspect } c.find( 'student_name' => 'KK' ),{:fields => ['name', 'score']}).each { |row| p row.inspect } c.find({'student_name' => /^M/}).each{ |row| puts row.inspect }
- 二次索引の生成
c.create_index("name")