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.