A partir de
mongoimport
versão 100.0.0, você pode excluir documentos no MongoDB com base em um arquivo importado. Para fazer isso, use delete
modo. Quando você usa
delete
modo, se um documento importado tiver o mesmo _id
valor como um existente na coleção para a qual você está importando, o documento existente será excluído. Você também pode especificar outro campo ou campos (além de
_id
campo) para ser o campo correspondente, se necessário. Exemplo
Suponha que tenhamos uma coleção chamada
pets
que contenham os seguintes documentos:db.pets.find()
Resultado:
{ "_id" :1, "name" :"Wag", "type" :"Dog", "weight" :20 }{ "_id" :2, "name" :"Latido", "tipo" :"Dog", "weight" :10 }{ "_id" :3, "name" :"Miau", "type" :"Cat", "weight" :7 }{ "_id" :4, "name" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Bat", "weight" :3 }
E temos o seguinte arquivo JSON chamadopets.json
:
{"_id":1,"name":"Wag","type":"Cachorro"}{"_id":2,"name":"Fofo","type":"Gato"," peso":10}{"_id":9,"name":"Salto","type":"Canguru","peso":60}
O comando a seguir importa o arquivo JSON usandodelete
modo:
mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json
A execução desse comando exclui quaisquer documentos correspondentes na coleção.
Verifique os resultados
Vamos dar uma olhada na coleção agora.
db.pets.find()
Resultado:
{ "_id" :3, "name" :"Miau", "type" :"Cat", "weight" :7 }{ "_id" :4, "name" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Bat", "weight" :3 }
Podemos ver que os 2 primeiros documentos foram excluídos. Eles foram excluídos porque seu_id
os valores corresponderam ao_id
valores nos documentos existentes. Isso ocorre apesar de outros detalhes não necessariamente corresponderem (como no documento 2).
Além disso, nosso arquivo importado tinha um documento com um_id
de 9, mas não havia documento correspondente e, portanto, nada foi excluído para esse.
Alterar o(s) campo(s) Upsert
Você pode usar o--upsertFields
parâmetro para especificar um campo diferente de_id
para o qual jogar contra. Ao usar vários campos com este parâmetro, passe-os como uma lista separada por vírgulas.
Suponha que tenhamos outro arquivo JSON chamadopets2.json
e fica assim:
{ "name" :"Miau", "type" :"Cat", "weight" :7 }{ "name" :"Bubbles", "type" :"Fish", "weight" :3 }
Este documento não inclui o_id
campo, então precisaríamos comparar com outros campos que identificam exclusivamente cada documento. Neste caso, poderíamos usar oname
etype
Campos.
Podemos, portanto, usar o seguintemongoimport
comando:
mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json
Agora vamos verificar a coleção novamente:
db.pets.find()
Resultado:
{ "_id" :4, "name" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Bat", "peso" :3 }
Miau, o gato foi excluído porque esse animal de estimação existia tanto na coleção do MongoDB quanto no documento importado.
Bubbles, o peixe, não tinha documento correspondente e, portanto, nada foi excluído para aquele.
Verifique se há
mongoimport
mongoimport
faz parte do pacote MongoDB Database Tools. As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB.
Se você não tem certeza se possui o MongoDB Database Tools/mongoimport
instalado, tente executar o seguinte comando em seu Terminal ou Prompt de Comando para verificar:
mongoimport --version
Se você o tiver, deverá ver as informações da versão, etc. Se não o tiver, poderá usar as instruções de instalação no site do MongoDB para instalá-lo em seu sistema.
Onde executar os comandos?
Não se esqueça, você precisa executarmongoimport
comandos da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando).
Não os execute a partir domongo
Concha.