MongoDB Matriz de objetos usando insert() com exemplo

โšก Resumo Inteligente

MongoDB O exemplo "Array de objetos usando insert()" mostra como adicionar vรกrios documentos a uma coleรงรฃo em uma รบnica operaรงรฃo. Ele armazena um array de registros de funcionรกrios, incorpora arrays dentro de um documento e exibe os resultados de forma organizada usando a funรงรฃo print do JSON.

  • ๐Ÿ“ฅ Inserรงรฃo em massa: O mรฉtodo insert() adiciona uma matriz de documentos a uma coleรงรฃo em uma รบnica operaรงรฃo eficiente.
  • ๐Ÿงพ Modelo de documento: Cada documento รฉ um conjunto de pares de campo e valor, e MongoDB Adiciona um _id exclusivo automaticamente.
  • ๐Ÿ—‚๏ธ Matrizes embutidas: Um array tambรฉm pode existir como um campo dentro de um documento, mantenhaping valores relacionados em conjunto.
  • ๐Ÿ” Mรฉtodos Modernos: insertOne() e insertMany() sรฃo as substituiรงรตes atuais e mais claras para o mรฉtodo insert() legado.
  • ๐Ÿ–จ๏ธ Readable Saรญda: O comando forEach(printjson) imprime cada documento em um formato JSON limpo e fรกcil de ler.

O que รฉ o mรฉtodo insert() em MongoDB?

O mรฉtodo insert() em MongoDB Adiciona um ou mais documentos a uma coleรงรฃo. Um documento รฉ um conjunto de pares campo-valor armazenados em BSON, uma forma binรกria de JSON. Quando vocรช passa um รบnico documento, `insert()` armazena esse registro; quando vocรช passa um array de documentos, ele os armazena todos em uma รบnica operaรงรฃo, o que รฉ mais rรกpido do que inseri-los um por um.

O mรฉtodo รฉ executado em uma coleรงรฃo especรญfica usando o padrรฃo db.collection.insert(). Se a coleรงรฃo de destino ainda nรฃo existir, MongoDB Ele รฉ criado automaticamente durante a primeira inserรงรฃo. Cada documento tambรฉm recebe um campo _id exclusivo, caso vocรช nรฃo forneรงa um, para que cada registro possa ser identificado posteriormente.

Embora insert() ainda funcione, versรตes mais recentes MongoDB As versรตes oferecem os mรฉtodos `insertOne()` e `insertMany()` como substitutos mais claros. Os exemplos abaixo usam `insert()` para adicionar uma matriz de documentos de funcionรกrios e, em seguida, exibem os resultados em um formato JSON legรญvel.

Adicionando uma matriz de documentos

O comando โ€œinserirโ€ tambรฉm pode ser usado para inserir vรกrios documentos em uma coleรงรฃo ao mesmo tempo. O exemplo de cรณdigo abaixo pode ser usado para inserir vรกrios documentos de uma vez.

O exemplo a seguir mostra como isso pode ser feito,

Passo 1) Crie uma JavaScript variรกvel chamada myEmployee para armazenar a matriz de documentos

Passo 2) Adicione os documentos necessรกrios com o nome do campo e valores ร  variรกvel

Passo 3) Use o comando insert para inserir a matriz de documentos na coleรงรฃo

var myEmployee=
	[
		{
			"Employeeid" : 1,
			"EmployeeName" : "Smith"
		},
		{
			"Employeeid"   : 2,
			"EmployeeName" : "Mohan"
		},
		{
			"Employeeid"   : 3,
			"EmployeeName" : "Joe"
		},
	];

	db.Employee.insert(myEmployee);

Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada

MongoDB Matriz de objetos usando insert()

A saรญda mostra que esses 3 documentos foram adicionados ร  coleรงรฃo.

Como inserir uma matriz dentro de um documento

Alรฉm de inserir uma sรฉrie de documentos separados, MongoDB Permite armazenar um array como um campo dentro de um รบnico documento. Isso รฉ รบtil quando um registro contรฉm naturalmente uma lista de valores, como um funcionรกrio com vรกrias habilidades ou um aluno matriculado em vรกrios cursos. MongoDB Utiliza um modelo de documento flexรญvel, onde o array reside diretamente dentro do objeto, em vez de em uma tabela separada, o que mantรฉm os dados relacionados juntos.

O exemplo a seguir insere um documento de funcionรกrio que contรฉm um campo de matriz chamado Habilidades:

db.Employee.insert(
   {
      "Employeeid" : 4,
      "EmployeeName" : "Alan",
      "Skills" : [ "MongoDB", "Node.js", "Express" ]
   }
);

As partes deste documento funcionam da seguinte maneira:

  • ID do funcionรกrio e Nome do empregado sรฃo pares comuns de campo e valor.
  • Competรชncias ร‰ um campo de matriz que armazena trรชs valores de string entre colchetes.
  • Todo o documento, incluindo a matriz incorporada, รฉ armazenado em uma รบnica operaรงรฃo de inserรงรฃo.

Apรณs adicionar o registro, vocรช pode confirmar a matriz incorporada com uma consulta de busca que imprime o resultado em JSON:

db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)

O resultado mostra a matriz Skills aninhada dentro do documento do funcionรกrio. LaterVocรช pode adicionar novos valores ร  matriz com o operador `$push` ou ler um รบnico elemento pela sua posiรงรฃo de รญndice. Armazenar valores conectados dessa forma mantรฉm cada documento independente, reduz a necessidade de junรงรตes entre coleรงรตes e torna os dados mais fรกceis de ler e manter.

insert() vs insertOne() vs insertMany()

MongoDB Oferece trรชs mรฉtodos relacionados para adicionar dados. A tabela abaixo os compara para que vocรช possa escolher o mais adequado:

Forma Propรณsito Exemplo
inserir() Mรฉtodo legado que adiciona um รบnico documento ou uma matriz de documentos. Ainda funciona, mas estรก obsoleto em drivers mais recentes. db.Employee.insert(myEmployee)
inserirUm() Adiciona exatamente um documento e retorna o _id inserido. Preferencial para registros รบnicos. db.Employee.insertOne({ โ€ฆ })
inserirMuitos() Adiciona um array de documentos em uma รบnica chamada e retorna todos os _ids inseridos. Preferencial para inserรงรตes em massa. db.Employee.insertMany([ { โ€ฆ }, { โ€ฆ } ])

Para novos projetos, use insertOne() e insertMany(), pois eles fornecem uma intenรงรฃo mais clara e relatรณrios de erros mais precisos. O mรฉtodo insert() permanece disponรญvel principalmente para manter a compatibilidade com versรตes anteriores de tutoriais e scripts.

Imprimindo no formato JSON

JSON รฉ um formato chamado JavaNotaรงรฃo de objeto de script, e รฉ apenas uma forma de armazenar informaรงรตes de maneira organizada e fรกcil de ler. Em nossos exemplos adicionais, usaremos a funcionalidade de impressรฃo JSON para ver a saรญda em um formato melhor.

Vejamos um exemplo de impressรฃo no formato JSON

db.Employee.find().forEach(printjson)

Code Explicaรงรฃo:

  1. A primeira alteraรงรฃo consiste em adicionar a funรงรฃo `forEach()` ร  funรงรฃo `find()`. Isso garante que cada documento da coleรงรฃo seja percorrido explicitamente. Dessa forma, vocรช tem mais controle sobre o que pode fazer com cada um dos documentos da coleรงรฃo.
  2. A segunda mudanรงa รฉ colocar o comando printjson na instruรงรฃo forEach. Isso farรก com que cada documento da coleรงรฃo seja exibido no formato JSON.

Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada

Saรญda:

Imprimindo em formato JSON

A saรญda mostra claramente que todos os documentos sรฃo impressos no estilo JSON.

Perguntas Frequentes

Sim. Passar um array de documentos para `insert()` adiciona todos eles em uma รบnica operaรงรฃo. Essa inserรงรฃo em lote รฉ mais rรกpida do que chamar `insert()` separadamente para cada documento, embora `insertMany()` seja atualmente o mรฉtodo preferido.

Sim. Se um documento nรฃo incluir um campo _id, MongoDB Gera automaticamente um ObjectId exclusivo durante a inserรงรฃo, para que cada registro armazenado possa ser identificado e recuperado posteriormente.

Por padrรฃo, o MongoDB Executa uma inserรงรฃo ordenada. Adiciona documentos na ordem especificada e para no primeiro erro, deixando os documentos restantes sem inserir. Definir `ordered` como `false` continua mesmo apรณs erros.

Sim. As ferramentas de IA podem transformar uma descriรงรฃo em linguagem natural dos seus dados em instruรงรตes `insertOne()` ou `insertMany()`, incluindo arrays incorporados. Sempre revise os campos e tipos de dados gerados antes de executรก-los em um banco de dados.

Com base nos seus padrรตes de consulta, a IA pode sugerir se deve incorporar arrays dentro de um documento ou referenciar coleรงรตes separadas. Isso ajuda os iniciantes a modelar dados de forma eficiente, evitando duplicaรงรฃo desnecessรกria ou aninhamento excessivo.

Resuma esta postagem com: