Exemplos de mongoimport
Nesta página
Esta página mostra exemplos para mongoimport
.
Execute mongoimport
na linha de comando do sistema, não no shell mongo
.
Importação Simples
mongoimport
restaura um banco de dados a partir de um backup feito com mongoexport
. A maioria dos argumentos para o mongoexport
também existe para o mongoimport
.
No exemplo a seguir, mongoimport
importa os dados JSON do arquivo contacts.json
para a coleção contacts
no banco de dados users
.
mongoimport --db=users --collection=contacts --file=contacts.json
Substituir documentos correspondentes durante a importação
Com --mode
upsert
, mongoimport
substitui os documentos existentes no banco de dados que correspondem a um documento no arquivo de importação pelo documento do arquivo de importação. Os documentos que não correspondem a um documento existente no banco de dados são inseridos normalmente. Por padrão, mongoimport
faz a correspondência de documentos com base no campo _id
. Use --upsertFields
para especificar os campos de correspondência.
Considere o seguinte documento na collection people
no banco de dados example
:
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com" }
O seguinte documento existe em um arquivo JSON do people-20160927.json
. O campo _id
do objeto JSON corresponde ao campo _id
do documento na coleção people
.
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
Para importar o arquivo people-20160927.json
e substituir documentos no banco de dados que correspondem aos documentos no arquivo de importação, especifique --mode
upsert
, da seguinte forma:
mongoimport -c=people -d=example --mode=upsert --file=people-20160927.json
O documento na coleção people
conteria então somente os campos do documento importado, conforme mostrado a seguir:
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
Mesclar documentos correspondentes durante a importação
Com --mode
merge
, mongoimport
permite mesclar campos de um novo registro com um documento existente no banco de dados. Os documentos que não correspondem a um documento existente no banco de dados são inseridos normalmente. Por padrão, mongoimport
faz a correspondência de documentos com base no campo _id
. Use --upsertFields
para especificar os campos a serem comparados.
A coleção people
no banco de dados example
contém o seguinte documento:
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com" }
O seguinte documento existe em um arquivo JSON do people-20160927.json
. O campo _id
do objeto JSON corresponde ao campo _id
do documento na coleção people
.
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "email": "crystal.duncan@example.com", "likes" : [ "running", "pandas", "software development" ] }
Para importar o arquivo people-20160927.json
e mesclar os documentos do arquivo de importação com os documentos correspondentes no banco de dados, especifique --mode
merge
, como a seguir:
mongoimport -c=people -d=example --mode=merge --file=people-20160927.json
A operação de importação combina os campos do arquivo JSON com o documento original no banco de dados, fazendo a correspondência dos documentos com base no campo _id
. Durante o processo de importação, mongoimport
adiciona os novos campos username
e likes
ao documento e atualiza o campo email
com o valor do documento importado, conforme mostrado a seguir:
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal.duncan@example.com", "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
Excluir Documentos Correspondentes
Novidades na versão 100.0.0.
Com --mode
delete
, mongoimport
exclui documentos existentes no banco de dados que correspondem a um documento no arquivo de importação. Os documentos que não correspondem a um documento existente no banco de dados são ignorados. Por padrão, mongoimport
faz a correspondência de documentos com base no campo _id
. Use --upsertFields
para especificar os campos a serem comparados.
Observação
Com o --mode
delete
, o mongoimport
exclui somente um documento existente por correspondência. Certifique-se de que os documentos do arquivo de importação correspondam a um único documento existente no banco de dados.
A coleção people
no banco de dados example
contém o seguinte documento:
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com", "employee_id" : "5463789356" }
O seguinte documento existe em um arquivo JSON do people-20160927.json
. O campo _id
do objeto JSON corresponde ao campo _id
do documento na coleção people
.
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "email": "crystal.duncan@example.com", "likes" : [ "running", "pandas", "software development" ], "employee_id" : "5463789356" }
Para excluir os documentos no banco de dados que correspondem a um documento no arquivo people-20160927.json
, especifique --mode
delete
, como no seguinte:
mongoimport -c=people -d=example --mode=delete --file=people-20160927.json
Como os campos _id
correspondem entre o banco de dados e o arquivo de entrada, o mongoimport
exclui o documento correspondente da coleção do people
. Os mesmos resultados também poderiam ter sido obtidos usando --upsertFields
para especificar o campo employee_id
, que também corresponde entre o banco de dados e o arquivo de entrada.
Importar JSON
para Host Remoto em Execução com Autenticação
No exemplo seguinte, o mongoimport
importa dados do arquivo /opt/backups/mdb1-examplenet.json
para a coleção contacts
dentro do banco de dados marketing
em um banco de dados MongoDB remoto com autenticação habilitada.
mongoimport
conecta-se à instância mongod
em execução no host mongodb1.example.net
pela porta 37017
. Ele autentica com o nome de usuário user
; o exemplo omite a opção --password
para que mongoimport
solicite a senha:
mongoimport --host=mongodb1.example.net --port=37017 --username=user --collection=contacts --db=marketing --file=/opt/backups/mdb1-examplenet.json
CSV
Importar
Importação geral de CSV
No exemplo a seguir, mongoimport
importa os dados formatados CSV no arquivo /opt/backups/contacts.csv
para a collection contacts
no banco de dados users
na instância do MongoDB em execução na porta do localhost numerada 27017
.
Especificar --headerline
instrui mongoimport
a determinar o nome dos campos usando a primeira linha no arquivo CSV.
mongoimport --db=users --collection=contacts --type=csv --headerline --file=/opt/backups/contacts.csv
mongoimport
usa o nome do arquivo de entrada, sem a extensão, como o nome da coleção se -c
ou --collection
não for especificado. O exemplo a seguir é, portanto, equivalente:
mongoimport --db=users --type=csv --headerline --file=/opt/backups/contacts.csv
Importar CSV com Tipos de Campo Especificados
Ao especificar o nome do campo, você também pode especificar o tipo de dados. Para especificar nomes e tipos de campo, inclua --columnsHaveTypes
com: --fields
, --fieldFile
ou --headerline
.
Especifique os nomes de campo e tipos de dados no formulário <colName>.<type>(<arg>)
.
Por exemplo, o /example/file.csv
contém os seguintes dados:
Katherine Gray, 1996-02-03, false, 1235, TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg== Albert Gilbert, 1992-04-24, true, 13, Q3VwY2FrZSBpcHN1bSBkb2xvciBzaXQgYW1ldCB0b290c2llIHJvbGwgYm9uYm9uIHRvZmZlZS4gQ2FuZHkgY2FuZXMgcGllIGNyb2lzc2FudCBjaG9jb2xhdGUgYmFyIGxvbGxpcG9wIGJlYXIgY2xhdyBtYWNhcm9vbi4gU3dlZXQgcm9sbCBjdXBjYWtlIGNoZWVzZWNha2Ugc291ZmZsw6kgYnJvd25pZSBpY2UgY3JlYW0uIEp1anViZXMgY2FrZSBjdXBjYWtlIG1hY2Fyb29uIGRhbmlzaCBqZWxseS1vIHNvdWZmbMOpLiBDYWtlIGFwcGxlIHBpZSBnaW5nZXJicmVhZCBjaG9jb2xhdGUgc3VnYXIgcGx1bS4gU3dlZXQgY2hvY29sYXRlIGNha2UgY2hvY29sYXRlIGNha2UganVqdWJlcyB0aXJhbWlzdSBvYXQgY2FrZS4gU3dlZXQgc291ZmZsw6kgY2hvY29sYXRlLiBMaXF1b3JpY2UgY290dG9uIGNhbmR5IGNob2NvbGF0ZSBtYXJzaG1hbGxvdy4gSmVsbHkgY29va2llIGNha2UgamVsbHkgYm==
A seguinte operação utiliza mongoimport
com a opção --fields
e --columnsHaveTypes
para especificar os nomes de campo e os BSON types dos dados CSV importados.
mongoimport --db=users --collection=contacts --type=csv \ --columnsHaveTypes \ --fields="name.string(),birthdate.date(2006-01-02),contacted.boolean(),followerCount.int32(),thumbnail.binary(base64)" \ --file=/example/file.csv
Ignorar Campos em Branco
Use a opção --ignoreBlanks
para ignorar os campos em branco. Para importações CSV e TSV, essa opção fornece a funcionalidade desejada na maioria dos casos, pois evita a inserção de campo com valores nulos em sua coleção.
O exemplo seguinte importa os dados do data.csv
, pulando quaisquer campos em branco:
mongoimport --db=users --collection=contacts --type=csv --file=/example/data.csv --ignoreBlanks
Conecte-se a um cluster MongoDB Atlas usando as credenciais AWS IAM
Novidades na versão 100.1.0.
Para conectar-se a um MongoDB Atlas cluster do que foi configurado para permitir autenticação por meio de credenciais do Amazon Web Services IAM, forneça um connection string
a mongoimport
semelhante ao seguinte:
mongoimport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
A conexão ao Atlas usando credenciais AWS IAM dessa maneira usa o MONGODB-AWS
authentication mechanism
e o $external
authSource
, como mostrado neste exemplo.
Se estiver usando um token de sessão da AWS, forneça-o também com o valor AWS_SESSION_TOKEN
authMechanismProperties
, como segue:
mongoimport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>
Observação
Se o ID da chave de acesso da AWS, a chave de acesso secreta ou o token de sessão incluírem os seguintes caracteres:
: / ? # [ ] @
esses caracteres devem ser convertidos usando codificação percentual.
Como alternativa, a ID da chave de acesso da AWS, a chave de acesso secreta e, opcionalmente, o token de sessão podem ser fornecidos fora da string de conexão usando as opções --username
, --password
e --awsSessionToken
, desta forma:
mongoimport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>
Quando fornecidos como parâmetros da linha de comando, estas três opções não exigem codificação percentual.
Você também pode definir essas credenciais em sua plataforma usando variáveis de ambiente padrão do AWS IAM. mongoimport
verifica as seguintes variáveis de ambiente quando você usa o MONGODB-AWS
authentication mechanism
:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
Se definidas, essas credenciais não precisam ser especificadas na connection string ou por meio de suas opções explícitas.
Observação
Se você optar por usar as variáveis de ambiente da AWS para especificar esses valores, não poderá combinar e corresponder com as opções explícitas ou de cadeia de conexão correspondentes para essas credenciais. Use as variáveis de ambiente para ID de chave de acesso e chave de acesso secreta (e token de sessão, se usado) ou especifique cada uma delas usando as opções explícitas ou de cadeia de conexão.
O exemplo a seguir define essas variáveis de ambiente no shell bash
:
export AWS_ACCESS_KEY_ID='<aws access key id>' export AWS_SECRET_ACCESS_KEY='<aws secret access key>' export AWS_SESSION_TOKEN='<aws session token>'
Outros shells usam sintaxe diferente para definir variáveis de ambiente. Consulte a documentação da sua plataforma para obter mais informações.
Você pode verificar se essas variáveis de ambiente foram definidas com o seguinte comando:
env | grep AWS
Depois de definido, o exemplo a seguir se conecta a um MongoDB Atlas cluster usando estas variáveis de ambiente:
mongoimport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>