Menu Docs
Página inicial do Docs
/
Ferramentas do banco de dados MongoDB
/

Exemplos de mongoimport

Nesta página

  • Importação Simples
  • Substituir documentos correspondentes durante a importação
  • Mesclar documentos correspondentes durante a importação
  • Excluir Documentos Correspondentes
  • Importar JSON para Host Remoto em Execução com Autenticação
  • CSV Importar
  • Saiba mais

Esta página mostra exemplos para mongoimport.

Execute mongoimport na linha de comando do sistema, não no shell mongo.

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

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" ]
}

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"
]
}

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.

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

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

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

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

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>

Voltar

Comportamento