Docs Menu
Docs Home
/ / /
Ruby MongoDB ドライバー
/

Ruby ドライバー クイックスタート

項目一覧

  • 前提条件
  • 接続を行う
  • データベースとコレクションへのアクセス
  • ドキュメントの挿入
  • コレクションをクエリする
  • Update Documents
  • Delete Documents
  • インデックスの作成
  • 完全なサンプルアプリ
  • デフォルト ポート 27017 を使用して、ローカルホスト上で実行中の MongoDB インスタンス。

  • Ruby MongoDB ドライバー。 MongoDB ドライバーをインストールする方法については、「 インストール」を参照してください。

  • コードの上部に次のステートメントが含まれます。

require 'mongo'

実行中の MongoDB インスタンスへの接続を確立するには、 Mongo::Clientを使用します。

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')

URI 接続stringを使用することもできます。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')

Tip

以下も参照してください。

次の例は、特定のデータベースにアクセスし、そのコレクションを表示する方法を示しています。

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')
db = client.database
db.collections # returns a list of collection objects
db.collection_names # returns a list of collection names
db.list_collections # returns a list of collection metadata hashes

コレクションにアクセスするには、コレクションを名前で参照します。

collection = client[:restaurants]

コレクションが存在しない場合、サーバーは最初にデータを入力するときにコレクションを作成します。

コレクションに単一のドキュメントを挿入するには、 insert_oneメソッドを使用します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
doc = {
name: 'Steve',
hobbies: [ 'hiking', 'tennis', 'fly fishing' ],
siblings: {
brothers: 0,
sisters: 1
}
}
result = collection.insert_one(doc)
result.n # returns 1, because one document was inserted

コレクションに複数のドキュメントを挿入するには、 insert_manyメソッドを使用します。

docs = [ { _id: 1, name: 'Steve',
hobbies: [ 'hiking', 'tennis', 'fly fishing' ],
siblings: { brothers: 0, sisters: 1 } },
{ _id: 2, name: 'Sally',
hobbies: ['skiing', 'stamp collecting' ],
siblings: { brothers: 1, sisters: 0 } } ]
result = collection.insert_many(docs)
result.inserted_count # returns 2 because two documents were inserted

コレクション クエリを作成するには、 findメソッドを使用します。

空のクエリフィルターは、コレクション内のすべてのドキュメントを返します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
collection.find.each do |document|
#=> Yields a BSON::Document.
end

一致するドキュメントのみを検索するには、クエリフィルターを使用します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
puts collection.find( { name: 'Sally' } ).first

例では、次の内容が出力されます。

{"_id" => 2, "name" => "Sally", "hobbies" => ["skiing", "stamp collecting"], "siblings" => { "brothers": 1, "sisters": 0 } }

一致するキーと値を指定して、ネストされたドキュメントをクエリします。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
puts collection.find("siblings.sisters": 1 ).first

例では、次の内容が出力されます。

{"_id"=>1, "name"=>"Steve", "hobbies"=>["hiking", "tennis", "fly fishing"], "siblings"=>{"brothers"=>0, "sisters"=>1}}

Tip

以下も参照してください。

更新方法は複数あり、 update_oneupdate_manyなどがあります。 update_oneは単一のドキュメントを更新し、 update_manyは複数のドキュメントを一度に更新します。

どちらのメソッドも引数として、クエリフィルター ドキュメントと、更新データを持つ 2 番目のドキュメントを受け取ります。 特定のフィールドを追加または更新するには、 $setを使用します。 $setを使用しない場合、既存のドキュメント全体が更新データに置き換えられます。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
result = collection.update_one( { 'name' => 'Sally' }, { '$set' => { 'phone_number' => "555-555-5555" } } )
puts collection.find( { 'name' => 'Sally' } ).first

例では、次の内容が出力されます。

{"_id" => 2, "name" => "Sally", "hobbies" => ["skiing", "stamp collecting"], "phone_number" => "555-555-5555"}

次の例では、 update_manyと空白のクエリフィルターを使用して、コレクション内のすべてのドキュメントを更新しています。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
result = collection.update_many( {}, { '$set' => { 'age' => 36 } } )
puts result.modified_count # returns 2 because 2 documents were updated

Tip

以下も参照してください。

コレクションからドキュメントを削除するには(単一または複数のドキュメントを一度に削除します)、 delete_oneメソッドまたはdelete_manyメソッドを使用します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
result = collection.delete_one( { name: 'Steve' } )
puts result.deleted_count # returns 1 because one document was deleted

次の例では、 コレクションにさらに 2 つのレコードを挿入し、正規表現に一致するnameフィールドを持つすべてのドキュメントを削除して、「S」で始まる string を検索します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
collection.insert_many([ { _id: 3, name: "Arnold" }, { _id: 4, name: "Susan" } ])
puts collection.count # counts all documents in collection
result = collection.delete_many({ name: /$S*/ })
puts result.deleted_count # returns the number of documents deleted

create_oneメソッドまたはcreate_manyメソッドを使用して、インデックスを単一または複数に一度に作成します。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
collection.indexes.create_one({ name: 1 }, unique: true)

1 つのステートメントで複数のインデックスを作成するには、 create_manyメソッドを使用します。 create_manyを使用する場合、構文はcreate_oneとは異なることに注意してください。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
collection.indexes.create_many([
{ key: { name: 1 } , unique: true },
{ key: { hobbies: 1 } },
])

Tip

以下も参照してください。

Rubyいくつかの一般的なユースケースで ドライバーを使用するサンプルアプリは、Github からダウンロードできます。 。

戻る

Tutorials