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

Inserir MongoDB()


No MongoDB o db.collection.insert() O método insere um documento ou documentos em uma coleção.

A collection parte é o nome da coleção na qual inserir o(s) documento(s).

Exemplo


Aqui está um exemplo de uso de db.collection.insert() para inserir vários documentos em uma coleção chamada pets :
db.pets.insert([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Resultado:
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

O db.collection.insert() O método retorna um objeto que contém o status da operação de inserção.

O objeto retornado depende se um único documento foi inserido ou vários documentos.
  • Quando um único documento é inserido, ele retorna um WriteResult objeto.
  • Quando um array de documentos é inserido, ele retorna um BulkWriteResult objeto.

Podemos ver que o exemplo acima retornou um BulkWriteResult objeto. Isso ocorre porque adicionamos uma matriz de documentos. Ele teria feito isso mesmo se a matriz contivesse apenas um elemento.

Agora, se usarmos db.collection.find() para olhar para a coleção, veremos os documentos recém-adicionados.
db.pets.find()

Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Nesse caso, nossos três documentos são os únicos do acervo, então apenas esses documentos foram devolvidos.

No entanto, se a coleção fosse grande, poderíamos usar os IDs dos documentos para restringir o resultado apenas aos documentos nos quais estamos interessados.
db.pets.find({_id: {$in: [1,2,3]}})

Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

E se a coleção não existir?


Se a coleção não existir, ela será criada e os documentos serão adicionados a ela.

Se a coleção já existe, então os documentos são simplesmente adicionados a ela (desde que seu _id valores não conflitam com nenhum existente).

Quando criei este exemplo, a coleção não existia e, portanto, a operação de inserção a criou.

O _id Campo


O _id field é um campo identificador exclusivo no MongoDB.

Conforme demonstrado no exemplo anterior, você pode fornecer seu próprio _id campo no documento. Se você fizer isso, seu valor deverá ser exclusivo na coleção. Isso ocorre porque seu _id campo será usado como o identificador exclusivo do documento.

Aqui está um exemplo de como inserir um documento sem fornecer o _id Campos.
db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

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

Observe que neste caso o método retorna um WriteResult objeto em vez de um BulkWriteResult objeto. Isso ocorre porque inserimos um único documento (e não estava em um array).

Agora vamos olhar para a coleção novamente.
db.pets.find()

Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }

Podemos ver que nosso novo documento está incluído na coleção e possui um _id campo com um valor gerado automaticamente.

O ordered Parâmetro


O db.collection.insert() também aceita um ordered parâmetro. Este é um parâmetro booleano com um valor padrão de true .

O ordered O parâmetro especifica se a operação de inserção deve ser ordenada ou não ordenada.

Se ordered está definido como false , os documentos são inseridos em um formato não ordenado e podem ser reordenados por mongod para aumentar o desempenho.

Com inserções ordenadas, se ocorrer um erro durante a inserção de um dos documentos, o MongoDB retornará o erro sem processar os documentos restantes na matriz.

Com inserções não ordenadas, se ocorrer um erro durante a inserção de um dos documentos, o MongoDB continua a inserir os documentos restantes na matriz.

Mais informações


O db.collection.insert() também aceita um writeConcern argumento, que descreve o nível de reconhecimento solicitado do MongoDB para operações de gravação.

Veja a documentação do MongoDB para db.collection.insert() Para maiores informações.