Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Por que usar o MongoDB com Ruby?

Alex Bevilacqua4 min read • Published Sep 30, 2022 • Updated Oct 07, 2022
MongoDBRuby
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Antes de descobrir o Ruby e o Ruby on Rails, eu era desenvolvedor .NET. Nesse momento, eu faria alterações ad-hoc em meu banco de dados de desenvolvimento, exportaria minhas definições de tabela/função/procedimento armazenado/visualização para arquivos de texto e as verificaria no controle de origem com quaisquer alterações de código. Usando a funcionalidadediff, eu comparava as alterações de esquema que os DBAs precisavam aplicar à produção e nós rastreamos isso separadamente.
Estou certo de que existiram ferramentas melhores (e eventualmente comece a usar algumas das ferramentas doRedGate), mas eu estava procurando uma mudança. Nessa época, a verdadeira milagrosidade do Ruby on Rails para minha vida eram as migrações de registros ativos, que ajustaram o trabalho com meu banco de dados ao meu fluxo de trabalho de programação. O gerenciamento de esquemas se tornou menos trabalhoso e havia rake tarefas para tudo que eu precisasse (aplicar migrações, reverter alterações, semear um banco de dados de teste).
A versão e o gerenciamento de esquemas com o Rails foram muito melhores do que o que eu estava usando, e não era como se isso pudesse ficar melhor — mas então me deparei com o MongoDB.
Ao trabalhar com o MongoDB, não há necessidade de CREATE TABLE foo (id integer, bar varchar(255), ...); se uma coleção (ou banco de dados associado) não existir, a inserção de um novo documento o criará automaticamente para você. Isso significa que as migrações do Active Record não são mais necessárias, pois esse nível de gerenciamento de alterações de esquema não é mais necessário.
Ter a flexibilidade de definir meu modelo de dados diretamente no código sem precisar recorrer ao gerenciamento intermediário que o Active Record facilitou meio que fazia sentido para mim. Agora eu podia manter o estado do objeto diretamente no meu banco de dados, incorporar detalhes do modelo relacionados e facilmente fazer consultas em torno dessas estruturas para recuperar meus dados rapidamente.

Esquema flexível.

Os dados no MongoDB têm um esquema flexível, pois as collection não impõem uma estrutura ou esquema estrito de documentos por padrão. Essa flexibilidade oferece opções de modelagem de dados para atender ao seu aplicativo e aos requisitos de desempenho, o que se alinha perfeitamente ao foco do Ruby em simplicidade e produtividade.

Vamos experimentar!

Podemos demonstrar facilmente como começar rapidamente a usar o driver Ruby do MongoDB usando o seguinte script Ruby simples que se conectará a um cluster, inserirá um documento e o lerá de volta:
1require 'bundler/inline'
2
3gemfile do
4 source 'https://rubygems.org'
5 gem 'mongo'
6end
7
8client = Mongo::Client.new('mongodb+srv://username:password@mycluster.mongodb.net/test')
9collection = client[:foo]
10collection.insert_one({ bar: "baz" })
11
12puts collection.find.first
13# => {"_id"=>BSON::ObjectId('62d83d9dceb023b20aff228a'), "bar"=>"baz"}
Quando o documento acima é inserido, um valor_id de BSON::ObjectId('62d83d9dceb023b20aff228a') é criado. Todos os documentos devem ter um campo_id.No entanto, se não for fornecido, um_idpadrão do tipo ObjectId será gerado. Ao executar o comando acima, você obterá um valor diferente para _id, ou você poderá optar por defini-lo explicitamente para qualquer valor que desejar!
Sinta-se livre para dar uma volta no exemplo acima usando seu MongoDB existente ou MongoDB Atlas cluster MongoDB Atlas. Se você não tiver um MongoDB Atlas cluster, inscreva-se em um cluster de camada sempre gratuita para começar.

Instalação

O MongoDB Ruby Driver está hospedado em RubyGemsou, se você quiser explorar o código-fonte, ele pode ser encontrado no GitHub.
Para simplificar o exemplo acima, usamos bundler/inline para fornecer uma solução de arquivo único usando o Bundler. No entanto, a gemmongopode ser adicionada com a mesma facilidade a umGemfile existente ou instalada por meio do gem install mongo.

Operações básicas de CRUD

Nossa amostra acima demonstra como criar e ler rapidamente um documento. A atualização e a exclusão de documentos são tão simples quanto mostrado abaixo:
1# set a new field 'counter' to 1
2collection.update_one({ _id: BSON::ObjectId('62d83d9dceb023b20aff228a')}, :"$set" => { counter: 1 })
3
4puts collection.find.first
5# => {"_id"=>BSON::ObjectId('62d83d9dceb023b20aff228a'), "bar"=>"baz", "counter"=>1}
6
7# increment the field 'counter' by one
8collection.update_one({ _id: BSON::ObjectId('62d83d9dceb023b20aff228a')}, :"$inc" => { counter: 1 })
9
10puts collection.find.first
11# => {"_id"=>BSON::ObjectId('62d83d9dceb023b20aff228a'), "bar"=>"baz", "counter"=>2}
12
13# remove the test document
14collection.delete_one({ _id: BSON::ObjectId('62d83d9dceb023b20aff228a') })

Mapeador de documentos de objetos

Embora toda a interação com o Atlas cluster possa ser feita diretamente usando o MongoDB Ruby Driver, a maioria dos desenvolvedores prefere uma camada de abstração, como um ORM ou ODM. Os desenvolvedores de Ruby podem usar o Mongoid ODM para modelar facilmente collection do MongoDB em seu código e simplificar a interação usando uma API fluída semelhante à Interface de Consulta do Active Record.
O exemplo a seguir adapta o exemplo anterior para usar o Mongoid:
1require 'bundler/inline'
2
3gemfile do
4 source 'https://rubygems.org'
5
6 gem 'mongoid'
7end
8
9Mongoid.configure do |config|
10 config.clients.default = { uri: "mongodb+srv://username:password@mycluster.mongodb.net/test" }
11end
12
13class Foo
14 include Mongoid::Document
15
16 field :bar, type: String
17 field :counter, type: Integer, default: 1
18end
19
20# create a new instance of 'Foo', which will assign a default value of 1 to the 'counter' field
21foo = Foo.create bar: "baz"
22
23puts foo.inspect
24# => <Foo _id: 62d84be3ceb023b76a48df90, bar: "baz", counter: 1>
25
26# interact with the instance variable 'foo' and modify fields programmatically
27foo.counter += 1
28
29# save the instance of the model, persisting changes back to MongoDB
30foo.save!
31
32puts foo.inspect
33# => <Foo _id: 62d84be3ceb023b76a48df90, bar: "baz", counter: 2>

Resumo

Esteja você usando Ruby/Rails para criar uma ferramenta de script/automação, um novo aplicativo web ou até mesmo a próxima Coinbase, o MongoDB oferece um driver que simplifica a interação com seus dados ou um ODM que integra perfeitamente seu modelo de dados com o código do seu aplicativo.

Conclusão

Interagir com seus dados MongoDB via Ruby — usando o Driver ou o ODM — é simples, mas você também pode interagir diretamente com seus dados do MongoDB Atlas usando o Data Explorerintegrado. No entanto, dependendo das suas preferências, há opções:
  • O MongoDB para Visual Studio Code permite que você se conecte à sua instância do MongoDB e interaja de uma forma que se ajuste ao seu fluxo de trabalho nativo e às ferramentas de desenvolvimento. Você pode navegar e navegar por seus bancos de dados e coleções do MongoDB, e criar protótipos de queries e agregações para uso em seus aplicativos.
  • O MongoDB Compass é uma ferramenta interativa para query, otimização e análise de dados do MongoDB. Obtenha insights importantes, arraste e solte para criar pipelines e muito mais.
  • O Studio 3T é uma GUI de terceiro 3extremamente fácil de usar para interagir com seus dados do MongoDB.
  • MongoDB Atlas Data API permite ler e escrever dados no MongoDB Atlas com HTTPS requests. Para usar a API, você só precisa de um cliente HTTPS e uma chave de API válida.
Ruby foi adicionado recentemente como uma opção de exportação de idioma ao MongoDB Compass e à extensão MongoDB VS Code. Usando essa integração, você pode converter facilmente um pipeline de agregação de qualquer ferramenta em código que pode ser copiado/coledo em seu aplicativo Ruby.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Construindo com padrões: o padrão bucket


May 16, 2022 | 3 min read
Tutorial

Crie um website de notícias sobre criptomoedas em C# usando o Microsoft Azure App Service e o MongoDB Atlas


Jun 13, 2023 | 9 min read
Início rápido

Java – Criptografia no nível do campo do lado do cliente


Mar 01, 2024 | 14 min read
Tutorial

Como usar a fase do pipeline de agregação Union All no MongoDB 4.4


Sep 09, 2024 | 16 min read
Sumário