Ruby MongoDBに接続する
概要
MongoDBをインストールしてから半年ほど経過してしまいましたが、また少しずつ進めていきます。
MongoDBのシェアはDB-Enginesによると(2016/8現在)データベース全体で4位、NoSQLでは1位のようです。それでも上位3つのデータベースは桁違いですが、PostgreSQLと同じくらいのシェアがあるんですね。仕事で使っていなくても、この結果だけで少し触って遊んでみる理由には十分じゃないでしょうか。
DB-Engines Ranking - popularity ranking of database management systems
接続
tutorialデータベースに接続してusersコレクションの取得を行います。
require 'rubygems' require 'mongo' # MongoDBへ接続 client = Mongo::Client.new('mongodb://localhost/tutorial') collection = client[:users]
以下の方法でも接続できます。私はURIを指定が気に入ってますがこの辺はお好みで。
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'tutorial')
登録
# 10回ループ回して、1件毎にコレクションの登録 10.times{|i| doc = {name: 'Alice_' + i.to_s, num: i} collection.insert_one(doc) } # まとめて登録 docs = [ {name: 'John', country: 'Canada'}, {name: 'Smith', country: 'USA'} ] result = collection.insert_many(docs) puts result.inserted_count
取得
# コレクションのカウント puts collection.count # データ取得 result = collection.find() result.each do |doc| puts doc end
更新
# コレクションの更新 collection.update_one({name: 'Alice_4'},{'$set': {age: 18}}) # まとめて更新 result = collection.update_many({num: {'$gte': 7}}, {'$set': {country: 'England'}}) puts result.modified_count
削除
# コレクションの削除 collection.delete_one(name: 'Smith') puts collection.count # まとめて削除 result = collection.delete_many() puts result.deleted_count
sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com
参考
https://docs.mongodb.com/ruby-driver/master/
- 作者: Kyle Banker,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/14
- メディア: 大型本
- 購入: 5人 クリック: 55回
- この商品を含むブログ (8件) を見る
- 作者: 渡部徹太郎,河村康爾,北沢匠,佐伯嘉康,佐藤直生,原沢滋,平山毅,李昌桓
- 出版社/メーカー: 秀和システム
- 発売日: 2016/02/24
- メディア: 単行本
- この商品を含むブログ (1件) を見る