<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 22:34:22 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[COMPASS-3829] Import JSON</title>
                <link>https://jira.mongodb.org/browse/COMPASS-3829</link>
                <project id="13182" key="COMPASS">Compass </project>
                    <description>&lt;h3&gt;&lt;a name=&quot;Userstory&quot;&gt;&lt;/a&gt;User story&lt;/h3&gt;

&lt;p&gt;As a Compass user&lt;br/&gt;
 I want to import documents from a JSON file&lt;br/&gt;
 So that I can quickly seed my collection with existing data&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;AcceptanceCriteria&quot;&gt;&lt;/a&gt;Acceptance Criteria&lt;/h3&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Compass can import a valid JSON file (an array of documents, &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3185&quot; title=&quot;As a frequent user, I need to import valid JSON files containing documents that span multiple lines&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3185&quot;&gt;&lt;del&gt;COMPASS-3185&lt;/del&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Compass cam import extended JSON (&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3384&quot; title=&quot;As a developer I need Compass to accept mongo shell mode JSON for import, including ObjectId&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3384&quot;&gt;&lt;del&gt;COMPASS-3384&lt;/del&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Compass can import a valid JSONL file (&lt;a href=&quot;http://jsonlines.org/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://jsonlines.org/&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;When an error happens during the import
	&lt;ul&gt;
		&lt;li&gt;Compass shows a meaningful error message&lt;/li&gt;
		&lt;li&gt;Compass says how many documents it managed to import&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;When the JSON is invalid
	&lt;ul&gt;
		&lt;li&gt;Compass displays a meaningful error (&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3755&quot; title=&quot;Improve importing invalid JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3755&quot;&gt;&lt;del&gt;COMPASS-3755&lt;/del&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;During the import, progress is displayed in the import modal&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;Notes&quot;&gt;&lt;/a&gt;Notes&lt;/h3&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;JSONL = whatever is the spec that mongoimport handles&lt;/li&gt;
&lt;/ul&gt;

</description>
                <environment></environment>
        <key id="898251">COMPASS-3829</key>
            <summary>Import JSON</summary>
                <type id="12" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14715&amp;avatarType=issuetype">Story</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="lucas.hrabovsky">Lucas Hrabovsky</assignee>
                                    <reporter username="massimiliano.marcon@mongodb.com">Massimiliano Marcon</reporter>
                        <labels>
                    </labels>
                <created>Fri, 16 Aug 2019 13:06:28 +0000</created>
                <updated>Sun, 29 Oct 2023 02:40:47 +0000</updated>
                            <resolved>Wed, 23 Oct 2019 14:48:49 +0000</resolved>
                                                    <fixVersion>1.21.0</fixVersion>
                                    <component>Import/Export</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="2509028" author="xgen-internal-githook" created="Wed, 30 Oct 2019 19:30:51 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;imlucas&apos;, &apos;email&apos;: &apos;hrabovsky.lucas@gmail.com&apos;, &apos;name&apos;: &apos;Lucas Hrabovsky&apos;}
&lt;p&gt;Message: COMPASS-3013: update import-export plugin (#1828)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;COMPASS-3013: update import-export plugin&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This PR introduces many performance enhancements, bug fixes, and new features for the Import/Export plugin. It covers many of the stories in COMPASS-3013&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Description&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; Combined release notes from mongodb-js/compass-import-export#5 and mongodb-js/compass-import-export#6&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Switch to proper node.js streams for processing&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The backend has been entirely rewritten to use node.js streams. Import and export also now send the `&lt;/p&gt;
{explicitlyIgnoreSession: true}
&lt;p&gt;` option to the node driver which has resolved transient errors and allows very large imports and exports that are performant while correct.&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-15 11 16 49&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&lt;/a&gt;)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Import now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-parser&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mafintosh/csv-parser&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mafintosh/csv-parser&lt;/a&gt;) for parsing CSV. Its fast and &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-spectrum&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://npmjs.org/csv-spectrum&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://npmjs.org/csv-spectrum&lt;/a&gt;) compliant&lt;/li&gt;
	&lt;li&gt;Import also now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;strip-bom-stream&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/sindresorhus/strip-bom-stream&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/sindresorhus/strip-bom-stream&lt;/a&gt;) to sanitize UTF Byte Order Markers before parsing&lt;/li&gt;
	&lt;li&gt;JSON export uses the latest &lt;span class=&quot;error&quot;&gt;&amp;#91;extended JSON spec&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mongodb/js-bson#ejson&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/js-bson#ejson&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Streams are robust enough to support fine grained cancellation and large collection reads such as `crimedb.incidents` (1M+ documents)&lt;/li&gt;
	&lt;li&gt;Import now uses the driver&apos;s &lt;span class=&quot;error&quot;&gt;&amp;#91;bulk write API&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&lt;/a&gt;) so its now possible to import for larger sources&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; title=&quot;Replace backend of the feature with better CSV/JSON parsers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3853&quot;&gt;&lt;del&gt;COMPASS-3853&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3853&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Automatically detect if JSON files are `--jsonArray` or ndjson|jsonl. It just works.&lt;/li&gt;
	&lt;li&gt;No more weird caveats around including empty lines at end of your file or not. It just works.&lt;/li&gt;
	&lt;li&gt;Use the CSV header line for field names&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; title=&quot;Import CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3827&quot;&gt;&lt;del&gt;COMPASS-3827&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3827&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; title=&quot;Import JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3829&quot;&gt;&lt;del&gt;COMPASS-3829&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3829&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Export&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Compass can export documents to a valid extended JSON file&lt;/li&gt;
	&lt;li&gt;Export respects project, limit, and skip from query bar&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; title=&quot;Export JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3828&quot;&gt;&lt;del&gt;COMPASS-3828&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3828&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; title=&quot;Export CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3825&quot;&gt;&lt;del&gt;COMPASS-3825&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3825&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import Options&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Adds new user options for import:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Ignore empty strings&lt;/li&gt;
	&lt;li&gt;Stop on errors&lt;/li&gt;
	&lt;li&gt;Delimiter (`csv` only)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-16 15 46 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Updated Progress Bar&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;From mongodb-js/compass-import-export run:&lt;/p&gt;

&lt;p&gt;```&lt;br/&gt;
npm run storybook&lt;br/&gt;
```&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-14 21 11 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: show file after export&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-01 15 23 25&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&lt;/a&gt;)&lt;/p&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: pretty human import error messages&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 22 48&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&lt;/a&gt;)&lt;br/&gt;
!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 25 22&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Checklist&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New tests and/or benchmarks are included&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Documentation is changed or added&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Motivation and Context&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Bugfix&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New feature&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Dependency update&lt;/li&gt;
	&lt;li&gt;[ ] Misc&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Types of changes&lt;br/&gt;
&amp;lt;!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --&amp;gt;&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;[ ] &lt;b&gt;Backport Needed&lt;/b&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Patch (non-breaking change which fixes an issue)&lt;/li&gt;
	&lt;li&gt;[ ] Minor (non-breaking change which adds functionality)&lt;/li&gt;
	&lt;li&gt;[ ] Major (fix or feature that would cause existing functionality to change)&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3830&quot; title=&quot;Import/Export entry points&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3830&quot;&gt;&lt;del&gt;COMPASS-3830&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="2506885" author="xgen-internal-githook" created="Tue, 29 Oct 2019 16:14:16 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Lucas Hrabovsky&apos;, &apos;username&apos;: &apos;imlucas&apos;, &apos;email&apos;: &apos;hrabovsky.lucas@gmail.com&apos;}
&lt;p&gt;Message: COMPASS-3013: update import-export plugin (#1828)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;COMPASS-3013: update import-export plugin&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This PR introduces many performance enhancements, bug fixes, and new features for the Import/Export plugin. It covers many of the stories in COMPASS-3013&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Description&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; Combined release notes from mongodb-js/compass-import-export#5 and mongodb-js/compass-import-export#6&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Switch to proper node.js streams for processing&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The backend has been entirely rewritten to use node.js streams. Import and export also now send the `&lt;/p&gt;
{explicitlyIgnoreSession: true}
&lt;p&gt;` option to the node driver which has resolved transient errors and allows very large imports and exports that are performant while correct.&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-15 11 16 49&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&lt;/a&gt;)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Import now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-parser&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mafintosh/csv-parser&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mafintosh/csv-parser&lt;/a&gt;) for parsing CSV. Its fast and &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-spectrum&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://npmjs.org/csv-spectrum&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://npmjs.org/csv-spectrum&lt;/a&gt;) compliant&lt;/li&gt;
	&lt;li&gt;Import also now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;strip-bom-stream&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/sindresorhus/strip-bom-stream&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/sindresorhus/strip-bom-stream&lt;/a&gt;) to sanitize UTF Byte Order Markers before parsing&lt;/li&gt;
	&lt;li&gt;JSON export uses the latest &lt;span class=&quot;error&quot;&gt;&amp;#91;extended JSON spec&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mongodb/js-bson#ejson&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/js-bson#ejson&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Streams are robust enough to support fine grained cancellation and large collection reads such as `crimedb.incidents` (1M+ documents)&lt;/li&gt;
	&lt;li&gt;Import now uses the driver&apos;s &lt;span class=&quot;error&quot;&gt;&amp;#91;bulk write API&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&lt;/a&gt;) so its now possible to import for larger sources&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; title=&quot;Replace backend of the feature with better CSV/JSON parsers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3853&quot;&gt;&lt;del&gt;COMPASS-3853&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3853&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Automatically detect if JSON files are `--jsonArray` or ndjson|jsonl. It just works.&lt;/li&gt;
	&lt;li&gt;No more weird caveats around including empty lines at end of your file or not. It just works.&lt;/li&gt;
	&lt;li&gt;Use the CSV header line for field names&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; title=&quot;Import CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3827&quot;&gt;&lt;del&gt;COMPASS-3827&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3827&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; title=&quot;Import JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3829&quot;&gt;&lt;del&gt;COMPASS-3829&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3829&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Export&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Compass can export documents to a valid extended JSON file&lt;/li&gt;
	&lt;li&gt;Export respects project, limit, and skip from query bar&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; title=&quot;Export JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3828&quot;&gt;&lt;del&gt;COMPASS-3828&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3828&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; title=&quot;Export CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3825&quot;&gt;&lt;del&gt;COMPASS-3825&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3825&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import Options&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Adds new user options for import:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Ignore empty strings&lt;/li&gt;
	&lt;li&gt;Stop on errors&lt;/li&gt;
	&lt;li&gt;Delimiter (`csv` only)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-16 15 46 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Updated Progress Bar&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;From mongodb-js/compass-import-export run:&lt;/p&gt;

&lt;p&gt;```&lt;br/&gt;
npm run storybook&lt;br/&gt;
```&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-14 21 11 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: show file after export&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-01 15 23 25&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&lt;/a&gt;)&lt;/p&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: pretty human import error messages&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 22 48&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&lt;/a&gt;)&lt;br/&gt;
!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 25 22&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Checklist&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New tests and/or benchmarks are included&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Documentation is changed or added&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Motivation and Context&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Bugfix&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New feature&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Dependency update&lt;/li&gt;
	&lt;li&gt;[ ] Misc&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Types of changes&lt;br/&gt;
&amp;lt;!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --&amp;gt;&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;[ ] &lt;b&gt;Backport Needed&lt;/b&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Patch (non-breaking change which fixes an issue)&lt;/li&gt;
	&lt;li&gt;[ ] Minor (non-breaking change which adds functionality)&lt;/li&gt;
	&lt;li&gt;[ ] Major (fix or feature that would cause existing functionality to change)&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3830&quot; title=&quot;Import/Export entry points&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3830&quot;&gt;&lt;del&gt;COMPASS-3830&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="2497404" author="xgen-internal-githook" created="Wed, 23 Oct 2019 14:16:12 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Lucas Hrabovsky&apos;, &apos;username&apos;: &apos;imlucas&apos;, &apos;email&apos;: &apos;hrabovsky.lucas@gmail.com&apos;}
&lt;p&gt;Message: COMPASS-3013: update import-export plugin (#1828)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;COMPASS-3013: update import-export plugin&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This PR introduces many performance enhancements, bug fixes, and new features for the Import/Export plugin. It covers many of the stories in COMPASS-3013&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Description&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; Combined release notes from mongodb-js/compass-import-export#5 and mongodb-js/compass-import-export#6&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Switch to proper node.js streams for processing&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The backend has been entirely rewritten to use node.js streams. Import and export also now send the `&lt;/p&gt;
{explicitlyIgnoreSession: true}
&lt;p&gt;` option to the node driver which has resolved transient errors and allows very large imports and exports that are performant while correct.&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-15 11 16 49&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952663-164e4900-f02b-11e9-8ea6-085825903ec9.png&lt;/a&gt;)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Import now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-parser&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mafintosh/csv-parser&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mafintosh/csv-parser&lt;/a&gt;) for parsing CSV. Its fast and &lt;span class=&quot;error&quot;&gt;&amp;#91;csv-spectrum&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://npmjs.org/csv-spectrum&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://npmjs.org/csv-spectrum&lt;/a&gt;) compliant&lt;/li&gt;
	&lt;li&gt;Import also now uses &lt;span class=&quot;error&quot;&gt;&amp;#91;strip-bom-stream&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/sindresorhus/strip-bom-stream&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/sindresorhus/strip-bom-stream&lt;/a&gt;) to sanitize UTF Byte Order Markers before parsing&lt;/li&gt;
	&lt;li&gt;JSON export uses the latest &lt;span class=&quot;error&quot;&gt;&amp;#91;extended JSON spec&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://github.com/mongodb/js-bson#ejson&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/js-bson#ejson&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Streams are robust enough to support fine grained cancellation and large collection reads such as `crimedb.incidents` (1M+ documents)&lt;/li&gt;
	&lt;li&gt;Import now uses the driver&apos;s &lt;span class=&quot;error&quot;&gt;&amp;#91;bulk write API&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/&lt;/a&gt;) so its now possible to import for larger sources&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; title=&quot;Replace backend of the feature with better CSV/JSON parsers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3853&quot;&gt;&lt;del&gt;COMPASS-3853&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3853&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3853&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Automatically detect if JSON files are `--jsonArray` or ndjson|jsonl. It just works.&lt;/li&gt;
	&lt;li&gt;No more weird caveats around including empty lines at end of your file or not. It just works.&lt;/li&gt;
	&lt;li&gt;Use the CSV header line for field names&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; title=&quot;Import CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3827&quot;&gt;&lt;del&gt;COMPASS-3827&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3827&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3827&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; title=&quot;Import JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3829&quot;&gt;&lt;del&gt;COMPASS-3829&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3829&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3829&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Export&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Compass can export documents to a valid extended JSON file&lt;/li&gt;
	&lt;li&gt;Export respects project, limit, and skip from query bar&lt;/li&gt;
	&lt;li&gt;Show how many documents it managed to export if there is an error or its canceled&lt;/li&gt;
	&lt;li&gt;Progress is displayed in the export modal as bar + number of docs exported&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;gt; Fixes &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; title=&quot;Export JSON&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3828&quot;&gt;&lt;del&gt;COMPASS-3828&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3828&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3828&lt;/a&gt;) and &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; title=&quot;Export CSV&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-3825&quot;&gt;&lt;del&gt;COMPASS-3825&lt;/del&gt;&lt;/a&gt;(&lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-3825&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/COMPASS-3825&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Import Options&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Adds new user options for import:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Ignore empty strings&lt;/li&gt;
	&lt;li&gt;Stop on errors&lt;/li&gt;
	&lt;li&gt;Delimiter (`csv` only)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-16 15 46 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66953255-29ade400-f02c-11e9-8281-8b663604bdec.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Updated Progress Bar&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;From mongodb-js/compass-import-export run:&lt;/p&gt;

&lt;p&gt;```&lt;br/&gt;
npm run storybook&lt;br/&gt;
```&lt;/p&gt;

&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-14 21 11 31&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66952664-16e6df80-f02b-11e9-8792-72195c9cd641.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: show file after export&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-01 15 23 25&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/65994225-d6029e80-e460-11e9-8f0a-5aca6474580b.png&lt;/a&gt;)&lt;/p&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;
			&lt;ol&gt;
				&lt;li&gt;feat: pretty human import error messages&lt;/li&gt;
			&lt;/ol&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 22 48&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175227-c1700300-e626-11e9-8343-963d6f4f5924.png&lt;/a&gt;)&lt;br/&gt;
!&lt;span class=&quot;error&quot;&gt;&amp;#91;Screenshot 2019-10-03 21 25 22&amp;#93;&lt;/span&gt;(&lt;a href=&quot;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://user-images.githubusercontent.com/23074/66175228-c1700300-e626-11e9-82ee-a8e47986c87a.png&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;
		&lt;ol&gt;
			&lt;li&gt;Checklist&lt;/li&gt;
		&lt;/ol&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New tests and/or benchmarks are included&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Documentation is changed or added&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Motivation and Context&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Bugfix&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; New feature&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Dependency update&lt;/li&gt;
	&lt;li&gt;[ ] Misc&lt;/li&gt;
&lt;/ul&gt;


&lt;ol&gt;
	&lt;li&gt;
	&lt;ol&gt;
		&lt;li&gt;Types of changes&lt;br/&gt;
&amp;lt;!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --&amp;gt;&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;[ ] &lt;b&gt;Backport Needed&lt;/b&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; Patch (non-breaking change which fixes an issue)&lt;/li&gt;
	&lt;li&gt;[ ] Minor (non-breaking change which adds functionality)&lt;/li&gt;
	&lt;li&gt;[ ] Major (fix or feature that would cause existing functionality to change)&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/01dd6871f63159d5cb5104c53441537920ceadef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                                                <inwardlinks description="is caused by">
                                        <issuelink>
            <issuekey id="616515">COMPASS-3185</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="670864">COMPASS-3384</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="834385">COMPASS-3755</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 28 Aug 2019 14:34:47 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 15 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>COMPASS-3013</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 15 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>lucas.hrabovsky</customfieldvalue>
            <customfieldvalue>massimiliano.marcon@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvldif:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr6cwv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="3355">Iteration Ostrich</customfieldvalue>
    <customfieldvalue id="3397">Iteration Python</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10555" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvkzrr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>