MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Criar um documento


O MongoDB fornece o insert() método (e dois outros) para adicionar documentos a um banco de dados.

O MongoDB fornece os três métodos a seguir para inserir documentos em um banco de dados:
  • insert()
  • insertOne()
  • insertMany()

O insert() Método


O insert() O método insere um ou mais documentos em uma coleção. Cada documento é fornecido como um parâmetro. O nome da coleção é anexado ao insert() método.

Aqui está a sintaxe para inserir um único documento:
db.collectionName.insert({ name: "value" })

No exemplo acima, o documento consiste em { name: "value" } . Este é um documento JSON. Os documentos JSON consistem em um ou mais pares de nome/valor, entre chaves {} .

O MongoDB usa documentos JSON para armazenar dados, por isso inserimos documentos nesse formato.

Já usamos esse método anteriormente quando criamos um banco de dados.

Vamos adicionar outro documento ao nosso banco de dados:
db.artists.insert({ artistname: "Jorn Lande" })

Isso insere um documento com { artistname: "Jorn Lande" } como seu conteúdo.

Agora, se pesquisarmos os artistas coleção, veremos dois documentos (incluindo o que criamos anteriormente):
> db.artists.find()
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }

Observe que o MongoDB criou um _id campo para os documentos. Se você não especificar um, o MongoDB criará um para você. No entanto, você pode fornecer este campo ao fazer a inserção se preferir ter controle sobre o valor do _id campo.
db.artists.insert({ _id: 1, artistname: "AC/DC" })

Resultado:
> db.artists.find()
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

O _id que o MongoDB fornece é um valor ObjectId de 12 bytes. É composto pelos seguintes valores;
  • um valor de 4 bytes representando os segundos desde a época do Unix,
  • um identificador de máquina de 3 bytes,
  • um ID de processo de 2 bytes e
  • um contador de 3 bytes, começando com um valor aleatório.

Criar vários documentos


Você pode inserir vários documentos em um único insert() método.

Neste exemplo, inserimos três documentos:
db.artists.insert(
   [
     { artistname: "The Kooks" },
     { artistname: "Bastille" },
     { artistname: "Gang of Four" }
   ]
)

Observe que os documentos são fornecidos como uma matriz. Os documentos estão entre colchetes [] , e eles são separados por vírgulas.

A execução do código acima resulta na seguinte mensagem:
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

Documentos incorporados


Um documento pode conter outros documentos, matrizes e matrizes de documentos.

Você também pode fornecer vários pares de nome/valor em um documento, separando-os com uma vírgula.
db.artists.insert({
    artistname : "Deep Purple",
    albums : [
                {
                    album : "Machine Head",
                    year : 1972,
                    genre : "Rock"
                }, 
                {
                    album : "Stormbringer",
                    year : 1974,
                    genre : "Rock"
                }
            ]
})

Resultado:
WriteResult({ "nInserted" : 1 })

Parâmetros


O insert() O método aceita os seguintes parâmetros.
Parâmetro Tipo Descrição
document documento ou array Um documento ou matriz de documentos para inserir na coleção (como nos exemplos acima).
writeConcern documento Parâmetro opcional. Este é um documento que expressa a preocupação de gravação. Uma preocupação de gravação descreve o nível de reconhecimento solicitado do MongoDB para operações de gravação em um mongod autônomo ou em conjuntos de réplicas ou em clusters fragmentados.
ordered booleano Parâmetro opcional. Se o valor for definido como true , o MongoDB realizará uma inserção ordenada dos documentos no array e, se ocorrer um erro com um dos documentos, o MongoDB retornará sem processar os documentos restantes no array.
Se o valor for definido como false , o MongoDB realizará uma inserção não ordenada e, se ocorrer um erro com um dos documentos, os documentos restantes na matriz continuarão sendo processados.

O insertOne() Método


Você também pode usar o insertOne() método para inserir um único documento em uma coleção:
db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })

Aqui, especificamos uma coleção inexistente. Como com o insert() método, a coleção especificada será criada se ainda não existir.

Você notará que a saída é diferente de quando você usa o insert() método:
{ "acknowledged" : true, "insertedId" : 1 }

Documentos incorporados


Como com insert() , você pode inserir documentos incorporados e matrizes de documentos:
db.artists.insertOne({
    artistname : "Miles Davis",
    albums : [
                {
                    album : "Kind of Blue",
                    year : 1959,
                    genre : "Jazz"
                }, 
                {
                    album : "Bitches Brew",
                    year : 1970,
                    genre : "Jazz"
                }
            ]
})

Resultado:
{
	"acknowledged" : true,
	"insertedId" : ObjectId("578214f048ef8c6b3ffb0159")
}

O insertMany() Método


Como o nome sugere, você pode usar insertMany() para inserir vários documentos:
db.musicians.insertMany(
   [
     { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 },
     { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 },
     { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 },
     { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 },
     { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 },
     { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 },
     { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 },
   ]
)

Novamente, a saída ao usar insertMany() é diferente de se você tivesse inserido vários documentos usando o insert() método:
{
	"acknowledged" : true,
	"insertedIds" : [
		2,
		3,
		4,
		5,
		6,
		7,
		8
	]
}

Documentos incorporados

db.artists.insertMany(
[
{
    artistname : "Robben Ford",
    albums : [
                {
                    album : "Bringing it Back Home",
                    year : 2013,
                    genre : "Blues"
                }, 
                {
                    album : "Talk to Your Daughter",
                    year : 1988,
                    genre : "Blues"
                }
            ]
}, {
    artistname : "Snoop Dogg",
    albums : [
                {
                    album : "Tha Doggfather",
                    year : 1996,
                    genre : "Rap"
                }, 
                {
                    album : "Reincarnated",
                    year : 2013,
                    genre : "Reggae"
                }
            ]
}
])

Resultado:
{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("578217c248ef8c6b3ffb015a"),
		ObjectId("578217c248ef8c6b3ffb015b")
	]
}