Ruby 드라이버 빠른 시작
전제 조건
기본 포트인 27017을 사용하여 localhost에서 실행 중인 MongoDB 인스턴스입니다.
Ruby MongoDB 운전자. MongoDB 운전자 를 설치하는 방법에 대한 지침은 설치 를 참조하세요.
코드 상단에 다음 문장을 추가합니다.
require 'mongo'
연결하기
실행 중인 MongoDB 인스턴스에 대한 연결을 설정하려면 Mongo::Client
를 사용합니다.
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')
URI 연결 문자열을 사용할 수도 있습니다.
client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
팁
다음도 참조하세요.
데이터베이스 및 컬렉션에 액세스하기
다음 예시에서는 특정 데이터베이스에 액세스하고 해당 컬렉션을 표시하는 방법을 보여줍니다.
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}}
문서 업데이트
update_one
및 update_many
를 포함하여 여러 업데이트 메서드가 있습니다. update_one
은 단일 문서를 업데이트하고 update_many
는 한 번에 여러 문서를 업데이트합니다.
두 메서드 모두 쿼리 필터 문서와 업데이트 데이터가 포함된 두 번째 문서를 인수로 사용합니다. 특정 필드(하나 또는 여러 개)를 추가하거나 업데이트하려면 $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
문서 삭제
컬렉션에서 문서를 삭제하려면(한 번에 하나씩 또는 여러 개) 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
다음 예시에서는 컬렉션에 레코드 두 개를 더 삽입한 다음 정규식과 일치하는 name
필드가 있는 모든 문서를 삭제하여 'S'로 시작하는 문자열을 찾습니다.
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 } }, ])
샘플 앱 완성하기
몇 가지 일반적인 사용 사례에 운전자 를 사용하는 샘플 앱 은 에서 다운로드 수 Ruby Github 있습니다. .