Menu Docs
Página inicial do Docs
/ / /
Driver Ruby MongoDB
/

Início rápido do driver Ruby

Nesta página

  • Pré-requisitos
  • Faça uma conexão
  • Acesse um banco de dados e uma coleção
  • Insira um documento
  • Consulte a coleção
  • Atualize documentos
  • Exclua documentos
  • Crie índices
  • Aplicativo de amostra completo
  • Uma instância MongoDB em execução no localhost usando a porta padrão, 27017.

  • O driver Ruby MongoDB . Consulte instalação para obter instruções sobre como instalar o driver do MongoDB .

  • A seguinte declaração no topo do seu código:

require 'mongo'

Use Mongo::Client para estabelecer uma conexão com uma instância do MongoDB em execução.

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

Você também pode usar uma cadeia de conexão URI:

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

Dica

Veja também:

Os exemplos a seguir demonstram como acessar um banco de dados específico e mostrar suas coleções:

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

Para acessar uma coleção, consulte-a pelo nome.

collection = client[:restaurants]

Se a coleção não existir, o servidor a criará na primeira inserção de dados

Para inserir um único documento em uma coleção, use o método 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

Para inserir vários documentos em uma coleção, use o método 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

Use o método find para criar consultas de coleção.

Um filtro de consulta vazio retorna todos os documentos na coleção.

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

Use um filtro de consulta para encontrar somente documentos correspondentes.

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

O exemplo deve imprimir o seguinte:

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

Consulte documentos aninhados especificando as chaves e os valores que você deseja corresponder.

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

O exemplo deve imprimir o seguinte:

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

Existem vários métodos de atualização, incluindo update_one e update_many. update_one atualiza um único documento, enquanto update_many atualiza vários documentos de uma só vez.

Ambos os métodos usam como argumentos um documento de filtro de consulta e um segundo documento com os dados de atualização. Use $set para adicionar ou atualizar um campo ou campos específicos. Sem $set, todo o documento existente é substituído pelos dados de atualização.

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

O exemplo deve imprimir o seguinte:

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

O exemplo a seguir usa update_many com um filtro de consulta em branco para atualizar todos os documentos na coleção.

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

Use os métodos delete_one ou delete_many para excluir documentos de uma coleção (individualmente ou vários ao mesmo tempo).

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

O exemplo a seguir insere mais dois registros na coleção e, em seguida, exclui todos os documentos com um campo name que corresponde a uma expressão regular para localizar uma string que comece com "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

Use os métodos create_one ou create_many para criar índices isoladamente ou vários ao mesmo tempo.

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

Use o método create_many para criar vários índices com uma declaração. Observe que, ao usar create_many, a sintaxe é diferente de 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 } },
])

Dica

Veja também:

Um aplicativo de amostra usando o Ruby driver para vários casos de uso comuns está disponível para download no Github.

Voltar

Tutorials