- Reference >
- MongoDB Package Components >
mongoimport
mongoimport
¶
On this page
macOS Sierra and Go 1.6 Incompatibility
Users running on macOS Sierra require the 3.2.10 or newer version
of mongoimport
.
Upcoming Tools Migration in MongoDB 4.4
Starting in MongoDB 4.4, the mongoimport
documentation
migrates to MongoDB Database Tools - mongoimport. Refer to
that page for more information on the upcoming version of
mongoimport
(tool version 100.0.0).
The documentation on this page only applies to the MongoDB 4.2
version of mongoimport
. The MongoDB 4.2 version of
mongoimport
is available for download following the instructions
in the Availability section below.
Synopsis¶
The mongoimport
tool imports content from an
Extended JSON, CSV, or TSV export
created by mongoexport
, or potentially, another third-party export
tool.
See the mongoexport document for more information regarding
mongoexport
, which provides the inverse “exporting”
capability.
Run mongoimport
from the system command line, not the mongo
shell.
Availability¶
The mongoimport
tool is part of the MongoDB tools package. Consult the
installation guide for your platform for
instructions on how to install the tools package as part of your
MongoDB installation.
The tools package is also available from the
MongoDB Download Center,
either as a separate tools
download, or contained within the
TGZ
or ZIP
downloads, depending on platform. On Windows, the MSI
installer includes all tools as part of the default installation.
Tip
If downloading the TGZ
or ZIP
files from the Download
Center, you may want to update your PATH
environment
variable to include the directory where you installed these tools.
See the installation guide
for your platform for more information.
Compatibility¶
Behavior¶
Warning
Avoid using mongoimport
and mongoexport
for
full instance production backups. They do not reliably preserve all rich
BSON data types, because JSON can only represent a subset
of the types supported by BSON. Use mongodump
and mongorestore
as described in MongoDB Backup Methods for this
kind of functionality.
JSON Format¶
Starting in MongoDB 4.2, mongoimport
expects import data
to be in Extended JSON v2.0 (either Relaxed or Canonical mode)
by default. To recognize data that is in Extended JSON v1.0 format, see
--legacy
.
In earlier versions, mongoimport
expects data in
MongoDB Extended JSON (v1) format.
Tip
In general, the versions of mongoexport
and
mongoimport
should match. That is, to import data
created from mongoexport
, you should use the
corresponding version of mongoimport
.
Encoding¶
mongoimport
only supports data files that are UTF-8 encoded.
Using other encodings will produce errors.
FIPS¶
Starting in version 4.2, MongoDB removes the --sslFIPSMode
option for mongoimport
. mongoimport
will use FIPS compliant connections to
mongod
/mongos
if the
mongod
/mongos
instances are
configured to use FIPS mode.
Write Concern¶
Starting in version 4.2, if you specify write concern in both the
--writeConcern
option and the
--uri connection string
option, the
--writeConcern
value overrides
the write concern specified in the URI string.
In earlier versions, the two options are incompatible.
Batches¶
Starting in MongoDB 4.2, mongoimport
uses maximum batch
size of 100,000 to perform bulk insert/upsert operations.
Required Access¶
In order to connect to a mongod
that enforces authorization
with the --auth
option, you must use the
--username
and --password
options. The connecting user must
possess, at a minimum, the readWrite
role on the database
into which they are importing data.
Options¶
-
mongoimport
¶
-
--help
¶
Returns information on the options and use of mongoimport.
-
--verbose
,
-v
¶
Increases the amount of internal reporting returned on standard output or in log files. Increase the verbosity with the
-v
form by including the option multiple times, (e.g.-vvvvv
.)
-
--quiet
¶
Runs mongoimport in a quiet mode that attempts to limit the amount of output.
This option suppresses:
- output from database commands
- replication activity
- connection accepted events
- connection closed events
-
--version
¶
Returns the mongoimport release number.
-
--uri
=<connectionString>
¶ New in version 3.4.6.
Specify a resolvable URI connection string (enclose in quotes) to connect to the MongoDB deployment.
For information on the components of the connection string, see the Connection String URI Format documentation.
Note
For TLS/SSL options, use the command-line options instead of the URI options for TLS/SSL (Available starting in 4.2).
Important
The following command-line options cannot be used in conjunction with
--uri
option:--host
--port
--db
--username
--password
(if the URI connection string also includes the password)--authenticationDatabase
--authenticationMechanism
Instead, specify these options as part of your
--uri
connection string.
-
--host
=<hostname><:port>
,
-h
=<hostname><:port>
¶ Default: localhost:27017
Specifies a resolvable hostname for the
mongod
to which to connect. By default, the mongoimport attempts to connect to a MongoDB instance running on the localhost on port number27017
.To connect to a replica set, specify the
replSetName
and a seed list of set members, as in the following:When specifying the replica set list format, mongoimport always connects to the primary.
You can also connect to any single member of the replica set by specifying the host and port of only that member:
If you use IPv6 and use the
<address>:<port>
format, you must enclose the portion of an address and port combination in brackets (e.g.[<address>]
).
-
--port
=<port>
¶ Default: 27017
Specifies the TCP port on which the MongoDB instance listens for client connections.
-
--ipv6
¶
Removed in version 3.0.
Enables IPv6 support and allows mongoimport to connect to the MongoDB instance using an IPv6 network. Prior to MongoDB 3.0, you had to specify
--ipv6
to use IPv6. In MongoDB 3.0 and later, IPv6 is always enabled.
-
--ssl
¶
Enables connection to a
mongod
ormongos
that has TLS/SSL support enabled.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslCAFile
=<filename>
¶ Specifies the
.pem
file that contains the root certificate chain from the Certificate Authority. Specify the file name of the.pem
file using relative or absolute paths.If
--tlsCAFile
/net.tls.CAFile
(or their aliases--sslCAFile
/net.ssl.CAFile
) is not specified and you are not using x.509 authentication, the system-wide CA certificate store will be used when connecting to an TLS/SSL-enabled server.To use x.509 authentication,
--tlsCAFile
ornet.tls.CAFile
must be specified unless using--tlsCertificateSelector
or--net.tls.certificateSelector
. Or if using thessl
aliases,--sslCAFile
ornet.ssl.CAFile
must be specified unless using--sslCertificateSelector
ornet.ssl.certificateSelector
.Warning
Version 3.2 and earlier: For TLS/SSL connections (
--ssl
) tomongod
andmongos
, if the mongoimport runs without the--sslCAFile
, mongoimport will not attempt to validate the server certificates. This creates a vulnerability to expiredmongod
andmongos
certificates as well as to foreign processes posing as validmongod
ormongos
instances. Ensure that you always specify the CA file to validate the server certificates in cases where intrusion is a possibility.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslPEMKeyFile
=<filename>
¶ Specifies the
.pem
file that contains both the TLS/SSL certificate and key. Specify the file name of the.pem
file using relative or absolute paths.This option is required when using the
--ssl
option to connect to amongod
ormongos
that hasCAFile
enabled withoutallowConnectionsWithoutCertificates
.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslPEMKeyPassword
=<value>
¶ Specifies the password to de-crypt the certificate-key file (i.e.
--sslPEMKeyFile
). Use the--sslPEMKeyPassword
option only if the certificate-key file is encrypted. In all cases, the mongoimport will redact the password from all logging and reporting output.If the private key in the PEM file is encrypted and you do not specify the
--sslPEMKeyPassword
option, the mongoimport will prompt for a passphrase. See TLS/SSL Certificate Passphrase.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslCRLFile
=<filename>
¶ Specifies the
.pem
file that contains the Certificate Revocation List. Specify the file name of the.pem
file using relative or absolute paths.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslAllowInvalidCertificates
¶
Bypasses the validation checks for server certificates and allows the use of invalid certificates. When using the
allowInvalidCertificates
setting, MongoDB logs as a warning the use of the invalid certificate.Starting in MongoDB 4.0, if you specify
--sslAllowInvalidCertificates
ornet.ssl.allowInvalidCertificates: true
(or in MongoDB 4.2, the alias--tlsAllowInvalidateCertificates
ornet.tls.allowInvalidCertificates: true
) when using x.509 authentication, an invalid certificate is only sufficient to establish a TLS/SSL connection but is insufficient for authentication.Warning
Although available, avoid using the
--sslAllowInvalidCertificates
option if possible. If the use of--sslAllowInvalidCertificates
is necessary, only use the option on systems where intrusion is not possible.If the
mongo
shell (and other MongoDB Tools) runs with the--sslAllowInvalidCertificates
option, themongo
shell (and other MongoDB Tools) will not attempt to validate the server certificates. This creates a vulnerability to expiredmongod
andmongos
certificates as well as to foreign processes posing as validmongod
ormongos
instances. If you only need to disable the validation of the hostname in the TLS/SSL certificates, see--sslAllowInvalidHostnames
.For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--sslAllowInvalidHostnames
¶
Disables the validation of the hostnames in TLS/SSL certificates. Allows mongoimport to connect to MongoDB instances even if the hostname in their certificates do not match the specified hostname.
For more information about TLS/SSL and MongoDB, see Configure mongod and mongos for TLS/SSL and TLS/SSL Configuration for Clients .
-
--username
=<username>
,
-u
=<username>
¶ Specifies a username with which to authenticate to a MongoDB database that uses authentication. Use in conjunction with the
--password
and--authenticationDatabase
options.Note
You cannot specify both
--username
and--uri
.
-
--password
=<password>
,
-p
=<password>
¶ Specifies a password with which to authenticate to a MongoDB database that uses authentication. Use in conjunction with the
--username
and--authenticationDatabase
options.To prompt the user for the password, pass the
--username
option without--password
or specify an empty string as the--password
value, as in--password ""
.Note
You cannot specify both
--password
and--uri
.
-
--authenticationDatabase
=<dbname>
¶ Specifies the authentication database where the specified
--username
has been created. See Authentication Database.Note
You cannot specify both
--authenticationDatabase
and--uri
.
-
--authenticationMechanism
=<name>
¶ Default: SCRAM-SHA-1
Specifies the authentication mechanism the mongoimport instance uses to authenticate to the
mongod
ormongos
.Changed in version 4.0: MongoDB removes support for the deprecated MongoDB Challenge-Response (
MONGODB-CR
) authentication mechanism.MongoDB adds support for SCRAM mechanism using the SHA-256 hash function (
SCRAM-SHA-256
).Value Description SCRAM-SHA-1 RFC 5802 standard Salted Challenge Response Authentication Mechanism using the SHA-1 hash function. SCRAM-SHA-256 RFC 7677 standard Salted Challenge Response Authentication Mechanism using the SHA-256 hash function.
Requires featureCompatibilityVersion set to
4.0
.New in version 4.0.
MONGODB-X509 MongoDB TLS/SSL certificate authentication. GSSAPI (Kerberos) External authentication using Kerberos. This mechanism is available only in MongoDB Enterprise. PLAIN (LDAP SASL) External authentication using LDAP. You can also use PLAIN
for authenticating in-database users.PLAIN
transmits passwords in plain text. This mechanism is available only in MongoDB Enterprise.Note
You cannot specify both
--authenticationMechanism
and--uri
.
-
--gssapiServiceName
=<serviceName>
¶ Specify the name of the service using GSSAPI/Kerberos. Only required if the service does not use the default name of
mongodb
.This option is available only in MongoDB Enterprise.
-
--gssapiHostName
=<hostname>
¶ Specify the hostname of a service using GSSAPI/Kerberos. Only required if the hostname of a machine does not match the hostname resolved by DNS.
This option is available only in MongoDB Enterprise.
-
--db
=<database>
,
-d
=<database>
¶ Specifies the name of the database on which to run the mongoimport.
-
--collection
=<collection>
,
-c
=<collection>
¶ Specifies the collection to import. If you do not specify
--collection
,mongoimport
takes the collection name from the input filename, omitting the file’s extension if it has one.
-
--fields
=<field1[,field2]>
,
-f
=<field1[,field2]>
¶ Specify a comma separated list of field names when importing csv or tsv files that do not have field names in the first (i.e. header) line of the file.
To also specify the field type as well as the field name, use
--fields
with--columnsHaveTypes
.If you attempt to include
--fields
when importing JSON data, mongoimport will return an error.--fields
is only for csv or tsv imports.
-
--fieldFile
=<filename>
¶ As an alternative to
--fields
, the--fieldFile
option allows you to specify a file that holds a list of field names if your csv or tsv file does not include field names in the first line of the file (i.e. header). Place one field per line.To also specify the field type as well as the field name, use
--fieldFile
with--columnsHaveTypes
.If you attempt to include
--fieldFile
when importing JSON data, mongoimport will return an error.--fieldFile
is only for csv or tsv imports.
-
--ignoreBlanks
¶
Ignores empty fields in csv and tsv exports. If not specified,
mongoimport
creates fields without values in imported documents.If you attempt to include
--ignoreBlanks
when importing JSON data, mongoimport will return an error.--ignoreBlanks
is only for csv or tsv imports.
-
--type
=<json|csv|tsv>
¶ Specifies the file type to import. The default format is JSON, but it’s possible to import csv and tsv files.
The
csv
parser accepts that data that complies with RFC RFC 4180. As a result, backslashes are not a valid escape character. If you use double-quotes to enclose fields in the CSV data, you must escape internal double-quote marks by prepending another double-quote.
-
--file
=<filename>
¶ Specifies the location and name of a file containing the data to import. If you do not specify a file,
mongoimport
reads data from standard input (e.g. “stdin”).
-
--drop
¶
Modifies the import process so that the target instance drops the collection before importing the data from the input.
-
--headerline
¶
If using
--type csv
or--type tsv
, uses the first line as field names. Otherwise,mongoimport
will import the first line as a distinct document.If you attempt to include
--headerline
when importing JSON data, mongoimport will return an error.--headerline
is only for csv or tsv imports.
-
--mode
=<insert|upsert|merge>
¶ Default: insert
New in version 3.4.
Specifies how the import process should handle existing documents in the database that match documents in the import file.
By default, mongoimport uses the
_id
field to match documents in the collection with documents in the import file. To specify the fields against which to match existing documents for theupsert
andmerge
modes, use--upsertFields
.Value Description insert
Insert the documents in the import file. mongoimport will log an error if you attempt to import a document that contains a duplicate value for a field with a unique index, such as _id
.upsert
Replace existing documents in the database with matching documents from the import file. mongoimport will insert all other documents. Replace Matching Documents during Import describes how to use --mode
upsert
.merge
Merge existing documents that match a document in the import file with the new document. mongoimport will insert all other documents. Merge Matching Documents during Import describes how to use --mode
merge
.
-
--upsertFields
=<field1[,field2]>
¶ Specifies a list of fields for the query portion of the upsert. Use this option if the
_id
fields in the existing documents don’t match the field in the document, but another field or field combination can uniquely identify documents as a basis for performing upsert operations.Changed in version 3.4: Modifies the import process to update existing objects in the database if they match based on the specified fields, while inserting all other objects. You do not need to use
--mode upsert
with--upsertFields
.If you do not specify a field,
--upsertFields
will upsert on the basis of the_id
field.To ensure adequate performance, indexes should exist for this field or fields.
-
--stopOnError
¶
Forces mongoimport to halt the insert operation at the first error rather than continuing the operation despite errors.
Starting in version 4.2,
mongoimport
, by default, continues when it encounters duplicate key and document validation errors. To ensure that the program stops on these errors, specify--stopOnError
.
-
--jsonArray
¶
Accepts the import of data expressed with multiple MongoDB documents within a single JSON array. Limited to imports of 16 MB or smaller.
Use
--jsonArray
in conjunction withmongoexport --jsonArray
.
-
--legacy
¶
Indicates that the import data is in Extended JSON v1 format instead of the default Extended JSON v2 format.
Tip
In general, the versions of
mongoexport
andmongoimport
should match. That is, to import data created frommongoexport
, you should use the corresponding version ofmongoimport
.For example, if the import data is in v1 format:
Import without the
--legacy
option results in the following document in the collection:Import with the
--legacy
results in the following document in the collection:New in version 4.2.
-
--maintainInsertionOrder
¶
Default: false
If specified,
- Starting in version 4.2, mongoimport inserts the documents in the order of their appearance in the input source. That is, both the bulk write batch order and document order within the batches are maintained.
- In earlier versions, only the batch order is maintained; document order within batches are not maintained.
Starting in MongoDB 4.2, specifying
--maintainInsertionOrder
also enables--stopOnError
and setsnumInsertionWorkers
to 1.If unspecified, mongoimport may perform the insertions in an arbitrary order.
-
--numInsertionWorkers
=<int>
¶ Default: 1
Specifies the number of insertion workers to run concurrently.
For large imports, increasing the number of insertion workers may increase the speed of the import.
-
--writeConcern
=<document>
¶ Default: majority
Specifies the write concern for each write operation that mongoimport performs.
Specify the write concern as a document with w options:
If the write concern is also included in the
--uri connection string
, the command-line--writeConcern
overrides the write concern specified in the URI string.
-
--bypassDocumentValidation
¶
Enables mongoimport to bypass document validation during the operation. This lets you insert documents that do not meet the validation requirements.
New in version 3.2.1.
-
--columnsHaveTypes
¶
New in version 3.4.
Instructs mongoimport that the field list specified in
--fields
,--fieldFile
, or--headerline
specifies the types of each field.Field names must be in the form of
<colName>.<type>(<arg>)
. You must backslash-escape the following characters if you wish to include them in an argument:(
,)
, and\
.type
Supported Arguments Example Header Field auto()
None. misc.auto()
binary(<arg>)
user thumbnail.binary(base64)
boolean()
None. verified.boolean()
date(<arg>)
Alias for date_go(<arg>)
. Go Language time.Parse format.created.date(2006-01-02 15:04:05)
date_go(<arg>)
Go Language time.Parse format created.date_go(2006-01-02 15:04:05)
date_ms(<arg>)
Microsoft SQL Server FORMAT format created.date_ms(yyyy-MM-dd H:mm:ss)
date_oracle(<arg>)
Oracle Database TO_DATE format. created.date_oracle(YYYY-MM-DD HH24:MI:SS)
decimal()
None price.decimal()
double()
None. revenue.double()
int32()
None. followerCount.int32()
int64()
None. bigNumber.int64()
string()
None. zipcode.string()
See Import CSV with Specified Field Types for sample usage.
If you attempt to include
--columnsHaveTypes
when importing JSON data, mongoimport will return an error.--columnsHaveTypes
is only for csv or tsv imports.
-
--parseGrace
=<grace>
¶ Default: stop
New in version 3.4.
Specifies how mongoimport handles type coercion failures when importing CSV or TSV files with
--columnsHaveTypes
.--parseGrace
has no effect when importing JSON documents.Value Description autoCast
Assigns a type based on the value of the field. For example, if a field is defined as a double
and the value for that field was"foo"
, mongoimport would make that field value a string type.skipField
For the row being imported, mongoimport does not include the field whose type does not match the expected type. skipRow
mongoimport does not import rows containing a value whose type does not match the expected type. stop
mongoimport returns an error that ends the import.
Examples¶
Simple Import¶
mongoimport
restores a database from a backup taken with
mongoexport
. Most of the arguments to mongoexport
also
exist for mongoimport
.
In the following example, mongoimport
imports
the JSON data from the contacts.json
file into the collection
contacts
in the users
database.
Replace Matching Documents during Import¶
Changed in version 3.4: In MongoDB 3.4, --mode upsert
replaces the
deprecated --upsert
option.
With --mode
upsert
, mongoimport
replaces
existing documents in the database that match a document in the
import file with the document from the import file.
Documents that do not match an existing document in the database are
inserted as usual. By default mongoimport
matches documents
based on the _id
field. Use --upsertFields
to specify
the fields to match against.
Consider the following document in the people
collection in the
example
database:
The following document exists in a people-20160927.json
JSON file.
The _id
field of the JSON object matches the _id
field of the
document in the people
collection.
To import the people-20160927.json
file and replace documents in
the database that match the documents in the import file, specify --mode
upsert
, as in the following:
The document in the people
collection would then contain only
the fields from the imported document, as in the following:
Merge Matching Documents during Import¶
New in version 3.4.
With --mode
merge
, mongoimport
enables you to
merge fields from a new record with an existing document in the
database. Documents that do not match an existing document in the
database are inserted as usual. By default mongoimport
matches documents based on the _id
field. Use
--upsertFields
to specify the fields to match against.
The people
collection in the example
database contains the
following document:
The following document exists in a people-20160927.json
JSON file.
The _id
field of the JSON object matches the _id
field of the
document in the people
collection.
To import the people-20160927.json
file and merge documents from
the import file with matching documents in the database, specify
--mode
merge
, as in the following:
The import operation combines the fields from the JSON file with the
original document in the database,
matching the documents based on the _id
field.
During the import process, mongoimport
adds the new username
and
likes
fields to the document and updates the email
field with
the value from the imported document, as in the following:
Import JSON
to Remote Host Running with Authentication¶
In the following example, mongoimport
imports data from the
file /opt/backups/mdb1-examplenet.json
into the contacts
collection
within the database marketing
on a remote MongoDB
database with authentication enabled.
mongoimport
connects to the mongod
instance running on
the host mongodb1.example.net
over port 37017
. It authenticates with the
username user
; the example omits the --password
option to have mongoimport
prompt for the password:
CSV
Import¶
General CSV Import¶
In the following example, mongoimport
imports the csv
formatted data in the /opt/backups/contacts.csv
file into the
collection contacts
in the users
database on the MongoDB
instance running on the localhost port numbered
27017
.
Specifying --headerline
instructs
mongoimport
to determine the name of the fields using the first
line in the CSV file.
mongoimport
uses the input file name, without the
extension, as the collection name if -c
or --collection
is
unspecified. The following example is therefore equivalent:
Import CSV with Specified Field Types¶
New in version 3.4.
Starting in MongoDB 3.4, when you specify the field name, you can also
specify the data type. To specify field names and type, include
--columnsHaveTypes
with
either: --fields
, --fieldFile
, or --headerline
.
Specify field names and data types in the form
<colName>.<type>(<arg>)
.
For example, a /example/file.csv
file contains the following data:
The following operation uses mongoimport
with the
--fields
and
--columnsHaveTypes
option
to specify both the field names and the BSON types of the imported CSV
data.
Ignore Blank Fields¶
Use the --ignoreBlanks
option
to ignore blank fields. For CSV and TSV imports, this
option provides the desired functionality in most cases because it avoids
inserting fields with null values into your collection.
The following example imports the data from data.csv
, skipping
any blank fields: