Visão geral
Neste guia, você aprenderá a usar o driver Ruby para adicionar documentos a uma collection do MongoDB realizando operações de inserção.
Uma operação de inserção insere um ou mais documentos em uma coleção MongoDB . Você pode executar uma operação de inserção usando os seguintes métodos:
insert_one
para inserir um único documentoinsert_many
para inserir um ou mais documentos
Dados de amostra
Os exemplos neste guia utilizam a restaurants
coleção do sample_restaurants
no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa coleção a partir do seu aplicação Ruby, crie um Mongo::Client
objeto que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database
collection
e:
database = client.use('sample_restaurants') collection = database[:restaurants]
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
O campo _id
Em uma coleção MongoDB, cada documento deve conter um campo _id
com um valor de campo único.
O MongoDB permite gerenciar este campo de duas maneiras:
Defina o campo
_id
para cada documento por conta própria, garantindo que cada valor seja único.Permita que o acionador gere automaticamente valores de
BSON::ObjectId
únicos para cada campo de documento_id
.
A menos que você possa garantir exclusividade, recomendamos deixar o driver gerar automaticamente os valores de _id
.
Observação
Os valores duplicados de _id
violam restrições de índice único , o que faz com que o driver retorne um erro.
Para saber mais sobre o campo _id
, consulte o guia Índices únicos no manual do MongoDB Server .
Para saber mais sobre a estrutura e as regras de documentos, consulte o guia Documentos no manual do MongoDB Server .
Inserir um documento
Para adicionar um único documento a uma coleção MongoDB , chame o método insert_one
e passe o documento que você deseja inserir.
O exemplo a seguir insere um documento na coleção restaurants
:
document = { name: 'Neighborhood Bar & Grill', borough: 'Queens' } collection.insert_one(document)
Insira vários documentos
Para adicionar vários documentos a uma coleção MongoDB , chame o método insert_many
e passe uma lista de documentos que você deseja inserir.
O exemplo a seguir insere dois documentos na collection restaurants
:
documents = [ { name: 'Metropolitan Cafe', borough: 'Queens' }, { name: 'Yankee Bistro', borough: 'Bronx' } ] collection.insert_many(documents)
Modificar comportamento de inserção
Você pode passar um objeto Hash
como parâmetro para o método insert_one
para definir opções para configurar a operação de inserção. Se você não especificar nenhuma opção, o driver executará a operação de inserção com as configurações padrão.
A tabela seguinte descreve as opções que você pode definir para configurar a operação insert_one
:
Opção | Descrição |
---|---|
| Instructs the driver whether to ignore document-level validation. For more information,
see Schema Validation in the MongoDB Server manual. Defaults to false . |
| Sets a comment to attach to the operation. For more information, see the insert command
fields guide in the MongoDB Server manual. |
| Sets the session to use for the operation. To learn more about sessions, see
Client Sessions and Causal Consistency Guarantees
in the MongoDB Server manual. |
| Sets the write concern for the operation. For more information, see the
Write Concern guide in the MongoDB Server manual. |
Você pode definir as configurações anteriores no método insert_many
passando um Hash
como parâmetro para a chamada do método. Você também pode usar a opção ordered
para especificar a ordem em que o driver insere documentos no MongoDB.
Exemplo
O código a seguir usa o método insert_many
para inserir três novos documentos em uma coleção. Como a opção bypass_document_validation
está ativada, essa operação de inserção ignora a validação em nível de documento.
documents = [ { name: 'Cloudy Day', borough: 'Brooklyn' }, { name: 'Squall or Shine', borough: 'Staten Island' } { name: 'Rose Field', borough: 'Queens' } ] options = { bypass_document_validation: true } collection.insert_many(documents, options)
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: