-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
mongoexport.txt
703 lines (418 loc) · 22 KB
/
mongoexport.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
.. _mongoexport:
===============
``mongoexport``
===============
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
.. |tool-binary| replace:: mongoexport
.. include:: /includes/admonition-mac-osx-sierra-restriction.rst
Synopsis
--------
:binary:`~bin.mongoexport` is a utility that produces a JSON or CSV export
of data stored in a MongoDB instance.
See the :doc:`mongoimport` document for more
information regarding the :binary:`~bin.mongoimport` utility, which
provides the inverse "importing" capability.
Considerations
--------------
.. include:: /includes/fact-type-fidelity-loss.rst
.. include:: /includes/fact-type-fidelity-loss-example.rst
Required Access
---------------
:binary:`~bin.mongoexport` requires read access on the target database.
Ensure that the connecting user posseses, at a minimum, the :authrole:`read`
role on the target database.
When connecting to a :binary:`~bin.mongod` or :binary:`~bin.mongos` that enforces
:doc:`/core/authentication`, ensure you use the required security
parameters based on the configured
:ref:`authentication mechanism <available-authentication-mechanisms>`.
.. _mongoexport-read-preference:
Read Preference
---------------
:binary:`~bin.mongoexport` defaults to :readmode:`primary` :ref:`read
preference <replica-set-read-preference>` when connected to a :binary:`~bin.mongos`
or a :term:`replica set`.
You can override the default read preference using the
:option:`--readPreference <mongoexport --readPreference>` option.
.. important::
Using a non-primary read preference on a :binary:`~bin.mongos` may
produce inconsistencies in data, including duplicates or missing
documents.
Options
-------
.. include:: /includes/extracts/fact-3.0-tools-drop-dbpath-support-mongoexport.rst
.. include:: /includes/fact-3.0-mongoexport-drop-csv-option.rst
.. binary:: mongoexport
.. program:: mongoexport
.. option:: --help
Returns information on the options and use of :program:`mongoexport`.
.. option:: --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``.)
.. option:: --quiet
Runs the :program:`mongoexport` in a quiet mode that attempts to limit the amount
of output.
This option suppresses:
- output from :term:`database commands <database command>`
- replication activity
- connection accepted events
- connection closed events
.. option:: --version
Returns the :program:`mongoexport` release number.
.. option:: --host <hostname><:port>, -h <hostname><:port>
*Default*: localhost:27017
Specifies a resolvable hostname for the :binary:`~bin.mongod` to which to
connect. By default, the :program:`mongoexport` attempts to connect to a MongoDB
instance running on the localhost on port number ``27017``.
To connect to a replica set, specify the
:setting:`~replication.replSetName` and a seed list of set members, as in
the following:
.. code-block:: none
<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
You can always connect directly to a single MongoDB instance by
specifying the host and port number directly.
.. versionchanged:: 3.0.0
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>]``).
.. option:: --port <port>
*Default*: 27017
Specifies the TCP port on which the MongoDB instance listens for
client connections.
.. option:: --ipv6
*Removed in version 3.0.*
Enables IPv6 support and allows :program:`mongoexport` to connect to the
MongoDB instance using an IPv6 network. Prior to MongoDB 3.0, you
had to specify :option:`--ipv6` to use IPv6. In MongoDB 3.0 and later, IPv6
is always enabled.
.. option:: --ssl
.. versionadded:: 2.6
Enables connection to a :binary:`~bin.mongod` or :binary:`~bin.mongos` that has
TLS/SSL support enabled.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslCAFile <filename>
.. versionadded:: 2.6
Specifies the :file:`.pem` file that contains the root certificate chain
from the Certificate Authority. Specify the file name of the
:file:`.pem` file using relative or absolute paths.
.. warning::
For TLS/SSL connections (``--ssl``) to :binary:`~bin.mongod` and
:binary:`~bin.mongos`, if the :program:`mongoexport` runs without the
:option:`--sslCAFile`, :program:`mongoexport` will not attempt
to validate the server certificates. This creates a vulnerability
to expired :binary:`~bin.mongod` and :binary:`~bin.mongos` certificates as
well as to foreign processes posing as valid :binary:`~bin.mongod` or
:binary:`~bin.mongos` instances. Ensure that you *always* specify the
CA file to validate the server certificates in cases where
intrusion is a possibility.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslPEMKeyFile <filename>
.. versionadded:: 2.6
Specifies the :file:`.pem` file that contains both the TLS/SSL certificate
and key. Specify the file name of the :file:`.pem` file using relative
or absolute paths.
This option is required when using the :option:`--ssl` option to connect
to a :binary:`~bin.mongod` or :binary:`~bin.mongos` that has
:setting:`~net.ssl.CAFile` enabled *without*
:setting:`~net.ssl.allowConnectionsWithoutCertificates`.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslPEMKeyPassword <value>
.. versionadded:: 2.6
Specifies the password to de-crypt the certificate-key file (i.e.
:option:`--sslPEMKeyFile`). Use the :option:`--sslPEMKeyPassword` option only if the
certificate-key file is encrypted. In all cases, the :program:`mongoexport` 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 :option:`--sslPEMKeyPassword` option, the :program:`mongoexport` will prompt for a passphrase. See
:ref:`ssl-certificate-password`.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslCRLFile <filename>
.. versionadded:: 2.6
Specifies the :file:`.pem` file that contains the Certificate Revocation
List. Specify the file name of the :file:`.pem` file using relative or
absolute paths.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslAllowInvalidCertificates
.. versionadded:: 2.6
Bypasses the validation checks for server certificates and allows
the use of invalid certificates. When using the
:setting:`~net.ssl.allowInvalidCertificates` setting, MongoDB logs as a
warning the use of the invalid certificate.
.. include:: /includes/extracts/ssl-facts-x509-invalid-certificate.rst
.. include:: /includes/extracts/ssl-facts-invalid-cert-warning-clients.rst
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslAllowInvalidHostnames
.. versionadded:: 3.0
Disables the validation of the hostnames in TLS/SSL certificates. Allows
:program:`mongoexport` to connect to MongoDB instances even if the hostname in their
certificates do not match the specified hostname.
.. include:: /includes/extracts/ssl-facts-see-more.rst
.. option:: --sslFIPSMode
.. versionadded:: 2.6
Directs the :program:`mongoexport` to use the FIPS mode of the installed OpenSSL
library. Your system must have a FIPS compliant OpenSSL library to use
the :option:`--sslFIPSMode` option.
.. include:: /includes/note-fips-is-enterprise-only.rst
.. option:: --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.
.. option:: --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.
.. versionchanged:: 3.0.0
If you do not specify an argument for :option:`--password`, :program:`mongoexport` returns
an error.
.. versionchanged:: 3.0.2
If you wish :program:`mongoexport` to prompt the user
for the password, pass the :option:`--username` option without
:option:`--password` or specify an empty string as the :option:`--password` value,
as in ``--password ""`` .
.. option:: --authenticationDatabase <dbname>
If you do not specify an authentication database, :program:`mongoexport`
assumes that the database specified to export holds the user's credentials.
.. option:: --authenticationMechanism <name>
*Default*: SCRAM-SHA-1
.. versionchanged:: 2.6
Added support for the ``PLAIN`` and ``MONGODB-X509`` authentication
mechanisms.
.. versionchanged:: 3.0
Added support for the ``SCRAM-SHA-1`` authentication mechanism. Changed
default mechanism to ``SCRAM-SHA-1``.
Specifies the authentication mechanism the :program:`mongoexport` instance uses to
authenticate to the :binary:`~bin.mongod` or :binary:`~bin.mongos`.
.. list-table::
:header-rows: 1
:widths: 20 40
* - Value
- Description
* - :ref:`SCRAM-SHA-1 <authentication-scram-sha-1>`
- `RFC 5802 <https://tools.ietf.org/html/rfc5802>`_ standard
Salted Challenge Response Authentication Mechanism using the SHA1
hash function.
* - :ref:`MONGODB-CR <authentication-mongodb-cr>`
- MongoDB challenge/response authentication.
* - :ref:`MONGODB-X509 <security-auth-x509>`
- MongoDB TLS/SSL certificate authentication.
* - :ref:`GSSAPI <security-auth-kerberos>` (Kerberos)
- External authentication using Kerberos. This mechanism is
available only in `MongoDB Enterprise
<http://www.mongodb.com/products/mongodb-enterprise?jmp=docs>`_.
* - :ref:`PLAIN <security-auth-ldap>` (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
<http://www.mongodb.com/products/mongodb-enterprise?jmp=docs>`_.
.. option:: --gssapiServiceName
.. versionadded:: 2.6
Specify the name of the service using :doc:`GSSAPI/Kerberos
</core/kerberos>`. Only required if the service does not use the
default name of ``mongodb``.
This option is available only in MongoDB Enterprise.
.. option:: --gssapiHostName
.. versionadded:: 2.6
Specify the hostname of a service using :doc:`GSSAPI/Kerberos
</core/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.
.. option:: --db <database>, -d <database>
Specifies the name of the database on which to run the :program:`mongoexport`.
.. option:: --collection <collection>, -c <collection>
Specifies the collection to export.
.. option:: --fields <field1[,field2]>, -f <field1[,field2]>
Specifies a field or fields to *include* in the export. Use a comma
separated list of fields to specify multiple fields.
If any of your field names include white space, use
quotation marks to enclose the field list. For example, if you wished
to export two fields, ``phone`` and ``user number``, you would
specify ``--fields "phone,user number"``.
For :option:`csv <mongoexport --type>` output formats,
:binary:`~bin.mongoexport` includes only the specified field(s), and the
specified field(s) can be a field within a sub-document.
For :term:`JSON` output formats, :binary:`~bin.mongoexport` includes
only the specified field(s) **and** the ``_id`` field, and if the
specified field(s) is a field within a sub-document, the
:binary:`~bin.mongoexport` includes the sub-document with all
its fields, not just the specified field within the document.
.. option:: --fieldFile <filename>
An alternative to :option:`--fields <mongoexport --fields>`. The
:option:`--fieldFile` option allows you to
specify in a file the field or fields to *include* in the export and is
**only valid** with the :option:`--type <mongoexport --type>` option
with value ``csv``. The
file must have only one field per line, and the line(s) must end with
the LF character (``0x0A``).
:binary:`~bin.mongoexport` includes only the specified field(s). The
specified field(s) can be a field within a sub-document.
.. option:: --query <JSON>, -q <JSON>
Provides a query as a :term:`JSON document` (enclosed in quotes) to
return matching documents in the export. Specify JSON in :doc:`strict
format </reference/mongodb-extended-json>`.
.. include:: /includes/fact-quote-command-line-query.rst
For example, given a collection named ``records`` in the database
``test`` with the following documents:
.. code:: json
{ "_id" : ObjectId("51f0188846a64a1ed98fde7c"), "a" : 1, "date" : ISODate("1960-05-01T00:00:00Z") }
{ "_id" : ObjectId("520e61b0c6646578e3661b59"), "a" : 1, "b" : 2, "date" : ISODate("1970-05-01T00:00:00Z") }
{ "_id" : ObjectId("520e642bb7fa4ea22d6b1871"), "a" : 2, "b" : 3, "c" : 5, "date" : ISODate("2010-05-01T00:00:00Z") }
{ "_id" : ObjectId("520e6431b7fa4ea22d6b1872"), "a" : 3, "b" : 3, "c" : 6, "date" : ISODate("2015-05-02T00:00:00Z") }
{ "_id" : ObjectId("520e6445b7fa4ea22d6b1873"), "a" : 5, "b" : 6, "c" : 8, "date" : ISODate("2018-03-01T00:00:00Z") }
{ "_id" : ObjectId("5cd0de910dbce4346295ae28"), "a" : 15, "b" : 5, "date" : ISODate("2015-03-01T00:00:00Z") }
The following :binary:`~bin.mongoexport` uses the :option:`-q` option to
export only the documents with the field ``a`` greater than or equal to
(:query:`$gte`) to ``3`` and the field ``date`` less than
``ISODate("2016-01-01T00:00:00Z")`` (using the :ref:`strict format
for dates { "$date": "YYYY-MM-DDTHH:mm:ss.mmm\<offset\>"} <extended-json-date>`):
.. code:: bash
mongoexport -d test -c records -q '{ a: { $gte: 3 }, date: { $lt: { "$date": "2016-01-01T00:00:00.000Z" } } }' --out exportdir/myRecords.json
The resulting file contains the following documents:
.. code:: json
{"_id":{"$oid":"520e6431b7fa4ea22d6b1872"},"a":3.0,"b":3.0,"c":6.0,"date":{"$date":"2015-05-02T00:00:00Z"}}
{"_id":{"$oid":"5cd0de910dbce4346295ae28"},"a":15.0,"b":5.0,"date":{"$date":"2015-03-01T00:00:00Z"}}
You can sort the results with the :option:`--sort` option to
:binary:`~bin.mongoexport`.
.. option:: --type <string>
*Default*: json
.. versionadded:: 3.0.0
Specifies the file type to export. Specify ``csv`` for :term:`CSV`
format or ``json`` for :term:`JSON` format.
If you specify ``csv``, then you must also use either
the :option:`--fields` or the :option:`--fieldFile` option to
declare the fields to export from the collection.
.. option:: --out <file>, -o <file>
Specifies a file to write the export to. If you do not specify a file
name, the :binary:`~bin.mongoexport` writes data to standard output
(e.g. ``stdout``).
.. option:: --jsonArray
Modifies the output of :binary:`~bin.mongoexport` to write the
entire contents of the export as a single :term:`JSON` array. By
default :binary:`~bin.mongoexport` writes data using one JSON document
for every MongoDB document.
.. option:: --pretty
.. versionadded:: 3.0.0
Outputs documents in a pretty-printed format JSON.
.. option:: --slaveOk, -k
.. deprecated:: 3.2
Sets the :ref:`replica-set-read-preference` to :readmode:`nearest`,
allowing :binary:`~bin.mongoexport` to read data from secondary
:term:`replica set` members.
:option:`--readPreference` replaces ``--slaveOk`` in MongoDB 3.2. You cannot
specify ``--slaveOk`` when :option:`--readPreference` is specified.
.. include:: /includes/warning-read-preference-mongos.rst
.. option:: --readPreference <string>
Specify the :ref:`read preference<replica-set-read-preference>` for
:program:`mongoexport`.
See :ref:`replica-set-read-preference-modes`.
:program:`mongoexport` defaults to :readmode:`primary`
:ref:`read preference <replica-set-read-preference>` when connected to a
:binary:`~bin.mongos` or a :term:`replica set`.
Otherwise, :program:`mongoexport` defaults to :readmode:`nearest`.
.. include:: /includes/warning-read-preference-mongos.rst
.. option:: --forceTableScan
Forces :binary:`~bin.mongoexport` to scan the data store directly instead
of traversing the ``_id`` field index. Use :option:`--forceTableScan` to skip the
index. Typically there are two cases where this behavior is
preferable to the default:
1. If you have key sizes over 800 bytes that would not be present
in the ``_id`` index.
2. Your database uses a custom ``_id`` field.
When you run with :option:`--forceTableScan`, :binary:`~bin.mongoexport` may return a
document more than once if a write operation interleaves with the
operation to cause the document to move.
.. warning:: Use :option:`--forceTableScan` with extreme caution
and consideration.
.. option:: --skip <number>
Use :option:`--skip` to control where :binary:`~bin.mongoexport` begins
exporting documents. See :method:`~cursor.skip()` for information about
the underlying operation.
.. option:: --limit <number>
Specifies a maximum number of documents to include in the
export. See :method:`~cursor.limit()` for information about
the underlying operation.
.. option:: --sort <JSON>
Specifies an ordering for exported results. If an index does
**not** exist that can support the sort operation, the results must
be *less than* 32 megabytes.
Use :option:`--sort` conjunction with :option:`--skip` and
:option:`--limit` to limit number of exported documents.
.. code-block:: sh
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --out export.0.json
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --skip 100 --out export.1.json
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --skip 200 --out export.2.json
See :method:`~cursor.sort()` for information about the underlying
operation.
Use
---
Export in CSV Format
~~~~~~~~~~~~~~~~~~~~
.. include:: /includes/fact-3.0-mongoexport-drop-csv-option.rst
In the following example, :binary:`~bin.mongoexport` exports data from the
collection ``contacts`` collection in the ``users`` database in :term:`CSV`
format to the file ``/opt/backups/contacts.csv``.
The :binary:`~bin.mongod` instance that :binary:`~bin.mongoexport` connects to is
running on the localhost port number ``27017``.
When you export in CSV format, you must specify the fields in the documents
to export. The operation specifies the ``name`` and ``address`` fields
to export.
.. code-block:: sh
mongoexport --db users --collection contacts --type=csv --fields name,address --out /opt/backups/contacts.csv
For CSV exports only, you can also specify the fields in a file
containing the line-separated list of fields to export. The file must
have only one field per line.
For example, you can specify the ``name`` and ``address`` fields in a
file ``fields.txt``:
.. code-block:: none
name
address
Then, using the :option:`--fieldFile` option, specify the fields to export with
the file:
.. code-block:: sh
mongoexport --db users --collection contacts --type=csv --fieldFile fields.txt --out /opt/backups/contacts.csv
.. versionchanged:: 3.0.0
:binary:`~bin.mongoexport` removed the ``--csv`` option and replaced with
the :option:`--type` option.
Export in JSON Format
~~~~~~~~~~~~~~~~~~~~~
This example creates an export of the ``contacts`` collection from the
MongoDB instance running on the localhost port number ``27017``. This
writes the export to the ``contacts.json`` file in :term:`JSON` format.
.. code-block:: sh
mongoexport --db sales --collection contacts --out contacts.json
Export from Remote Host Running with Authentication
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following example exports the ``contacts`` collection in the
``marketing`` database from a remote MongoDB instance that requires
authentication.
Specify the:
- :option:`--host <mongoexport --host>`
- :option:`--port <mongoexport --port>`
- :option:`--username <mongoexport --username>`
- :option:`--authenticationDatabase <mongoexport --authenticationDatabase>`
- :option:`--collection <mongoexport --collection>`
- :option:`--db <mongoexport --db>`
- :option:`--out <mongoexport --out>`
.. tip::
Omit the :option:`--password <mongoexport --password>` option to
have ``mongoexport`` prompt for the password:
.. code-block:: sh
mongoexport --host mongodb1.example.net --port 27017 --username someUser --authenticationDatabase admin --collection contacts --db marketing --out mdb1-examplenet.json
Export Query Results
~~~~~~~~~~~~~~~~~~~~
You can export only the results of a query by supplying a query filter with
the :option:`--query <mongoexport --query>` option, and limit the results to a single
database using the ":option:`--db <mongoexport --db>`" option.
For instance, this command returns all documents in the ``sales``
database's ``contacts`` collection that contain a field named ``dept``
equal to ``"ABC"`` and the field ``date`` greater than or equal to
ISODate("2018-01-01") (using the :ref:`strict format for dates
{ "$date": "YYYY-MM-DDTHH:mm:ss.mmm\<offset\>"} <extended-json-date>` )
.. code-block:: sh
mongoexport --db sales --collection contacts --query '{"dept": "ABC", date: { $gte: { "$date": "2018-01-01T00:00:00.000Z" } }}'
.. include:: /includes/fact-quote-command-line-query.rst