<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 22:39:53 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-5528] Compass replaces whole array if you update one field in an array of objects</title>
                <link>https://jira.mongodb.org/browse/COMPASS-5528</link>
                <project id="13182" key="COMPASS">Compass </project>
                    <description>&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;The Compass documentation here: &lt;a href=&quot;https://docs.mongodb.com/compass/master/documents/modify/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.mongodb.com/compass/master/documents/modify/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;says &lt;em&gt;&quot;When you edit a document in List or Table view, Compass performs a &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;findOneAndUpdate&lt;/a&gt; operation and updates only those fields that you have changed.&lt;/em&gt;&quot;&lt;/p&gt;

&lt;p&gt;When it comes to updating arrays of subdocuments this is not true and is very misleading.&lt;/p&gt;

&lt;p&gt;If you update a single field in a subdocument that is in an array of subdocs, then Compass replaces the whole array.&lt;/p&gt;

&lt;p&gt;This makes using/testing Change Streams with Compass problematic, since the Change Event will contain the whole array of subdocs, rather than just the fields that the user actually changed.&lt;/p&gt;

&lt;p&gt;It would be very useful if Compass used $set specifications in the update operation for individual fields.&#160; &lt;/p&gt;

&lt;p&gt;Since Compass does know the name of the array field and the index of the entry in that array, generating $set&apos;s that look like:&lt;/p&gt;


&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;$set: {&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&#160;&#160; &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;&quot;mySubdocArray.7.myChangedField&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;:&#160; newValue&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;should be quite doable.&lt;/p&gt;</description>
                <environment>MongoDB v5.0.6&lt;br/&gt;
Compass v1.30.1</environment>
        <key id="1987228">COMPASS-5528</key>
            <summary>Compass replaces whole array if you update one field in an array of objects</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</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="anna.henningsen@mongodb.com">Anna Henningsen</assignee>
                                    <reporter username="ataramina@shorecg.com">Andrzej Taramina</reporter>
                        <labels>
                    </labels>
                <created>Mon, 21 Feb 2022 17:56:22 +0000</created>
                <updated>Wed, 10 Jan 2024 22:36:56 +0000</updated>
                            <resolved>Wed, 13 Jul 2022 09:30:30 +0000</resolved>
                                                    <fixVersion>1.32.4</fixVersion>
                                    <component>Compass</component>
                    <component>CRUD</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="4789049" author="xgen-internal-githook" created="Tue, 30 Aug 2022 17:00:55 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: compass-settings&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4685693" author="xgen-internal-githook" created="Mon, 18 Jul 2022 14:22:53 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: 1.32-releases&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4679870" author="xgen-internal-githook" created="Thu, 14 Jul 2022 17:12:24 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: update-schema-validation-warnings-to-leafygreen&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4679253" author="xgen-internal-githook" created="Thu, 14 Jul 2022 14:18:15 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: compass-sidebar-merge&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4677746" author="xgen-internal-githook" created="Wed, 13 Jul 2022 20:15:54 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5673&quot; title=&quot;Update Query Bar to Leafy Green, implement new designs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5673&quot;&gt;&lt;del&gt;COMPASS-5673&lt;/del&gt;&lt;/a&gt;-query-bar&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4676587" author="xgen-internal-githook" created="Wed, 13 Jul 2022 14:21:55 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5672&quot; title=&quot;Update CRUD toolbar to Leafy Green&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5672&quot;&gt;&lt;del&gt;COMPASS-5672&lt;/del&gt;&lt;/a&gt;-update-crud-toolbar-to-lg&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4676525" author="xgen-internal-githook" created="Wed, 13 Jul 2022 14:05:08 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5677&quot; title=&quot;Update Query History toolbar to Leafy Green&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5677&quot;&gt;&lt;del&gt;COMPASS-5677&lt;/del&gt;&lt;/a&gt;-update-query-history-toolbar&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4676253" author="xgen-internal-githook" created="Wed, 13 Jul 2022 11:43:47 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5946&quot; title=&quot;Use Leafy Green Select and Combobox components&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5946&quot;&gt;&lt;del&gt;COMPASS-5946&lt;/del&gt;&lt;/a&gt;-leafy-green-select-and-combobox&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4676034" author="xgen-internal-githook" created="Wed, 13 Jul 2022 09:29:13 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805 (#3239)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: main&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/c865b66bd7c443da8f9d6ab9815aabf98175d8b5&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4670283" author="xgen-internal-githook" created="Mon, 11 Jul 2022 13:12:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, there is an&lt;br/&gt;
    upcoming server sharding project will hopefully already have&lt;br/&gt;
    made inclusion of the shard keys unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: 5805-dev&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/029c55f74c5e411558faf9f15e955d4c769fe905&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/029c55f74c5e411558faf9f15e955d4c769fe905&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4670259" author="xgen-internal-githook" created="Mon, 11 Jul 2022 13:00:40 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anna Henningsen&apos;, &apos;email&apos;: &apos;anna.henningsen@mongodb.com&apos;, &apos;username&apos;: &apos;addaleax&apos;}
&lt;p&gt;Message: feat(hadron-document)!: handle nested fields and dots &amp;amp; dollars well COMPASS-5805&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Instead of fully replacing top-level properties only when editing&lt;br/&gt;
  documents, set only the individual nested values that have been&lt;br/&gt;
  edited.&lt;/li&gt;
	&lt;li&gt;This does not apply to array item removals, since there is no&lt;br/&gt;
    way to perform this (at least in MongoDB 4.0, but doing so&lt;br/&gt;
    on newer versions is also not straightforward).&lt;/li&gt;
	&lt;li&gt;Use `$getField` and `$setField` to modify fields whose names&lt;br/&gt;
    contain dots or start with a dollar sign.&lt;br/&gt;
    This is kind of a breaking change in that, previously, we&lt;br/&gt;
    would have queried for the field names containing dots,&lt;br/&gt;
    the server would have interpreted the field name as referring&lt;br/&gt;
    to nested documents, almost never found a document matching that&lt;br/&gt;
    (unless the doc happened to have a shape like&lt;br/&gt;
    `
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { x}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;` with matching values), and we then&lt;br/&gt;
    prompted the user to force-update due to the assumption that&lt;br/&gt;
    no document having been found means that it has been updated&lt;br/&gt;
    in the background.&lt;br/&gt;
    After this change, we just inform users that doing this&lt;br/&gt;
    properly requires MongoDB 5.0 or above. Users can still perform&lt;br/&gt;
    edits through the JSON view, at least for now (potentially only&lt;br/&gt;
    until &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5753&quot; title=&quot;JSON editor is the only way to change _id&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5753&quot;&gt;COMPASS-5753&lt;/a&gt; is done).&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;Split the query/update document generation parts into two steps,&lt;br/&gt;
  and move these out of the `Document` class to `ObjectGenerator`&lt;br/&gt;
  (which is already a collection of static methods for recursively&lt;br/&gt;
  traversing a document/element tree).&lt;/li&gt;
	&lt;li&gt;In the first step, gather all the elements that were updated,&lt;br/&gt;
    their original paths and values and their new paths and values.&lt;/li&gt;
	&lt;li&gt;In the second step, build either a query out of those original&lt;br/&gt;
    paths and values, or build the update document out of the new&lt;br/&gt;
    paths and values.&lt;/li&gt;
	&lt;li&gt;Drive-by bugfixes:&lt;/li&gt;
	&lt;li&gt;When renaming elements, we previously did not check that the&lt;br/&gt;
    new name was not already added in the background. We check&lt;br/&gt;
    this as well now.&lt;/li&gt;
	&lt;li&gt;Handle the case in which elements are renamed circularly,&lt;br/&gt;
    e.g. key2 &#8594; key3, key1 &#8594; key2 (or similar add/remove situations).&lt;/li&gt;
	&lt;li&gt;Use string arrays instead of objects that are only being used&lt;br/&gt;
  to extract their keys in the hadron-document API for hopefully&lt;br/&gt;
  a bit more API clarity.&lt;/li&gt;
	&lt;li&gt;Clarify in the docs that dots inside field names refer to&lt;br/&gt;
    nested documents. This is the way that sharding behaves,&lt;br/&gt;
    which is why we use them in the first place, and is not&lt;br/&gt;
    a practical API to break. (And if it does, PM-1632 will&lt;br/&gt;
    hopefully already have made inclusion of the shard keys&lt;br/&gt;
    unnecessary.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This also addresses &lt;a href=&quot;https://jira.mongodb.org/browse/COMPASS-5528&quot; title=&quot;Compass replaces whole array if you update one field in an array of objects&quot; class=&quot;issue-link&quot; data-issue-key=&quot;COMPASS-5528&quot;&gt;&lt;del&gt;COMPASS-5528&lt;/del&gt;&lt;/a&gt; (which is about adjusting the&lt;br/&gt;
update document sent to the server, whereas COMPASS-5805 is about&lt;br/&gt;
adjusting the query document).&lt;br/&gt;
Branch: 5805-dev&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb-js/compass/commit/148cc77f498c5d2ea02d5682451c90d5d3aeece7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/compass/commit/148cc77f498c5d2ea02d5682451c90d5d3aeece7&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4409715" author="massimiliano.marcon" created="Mon, 14 Mar 2022 13:12:59 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=ataramina%40shorecg.com&quot; class=&quot;user-hover&quot; rel=&quot;ataramina@shorecg.com&quot;&gt;ataramina@shorecg.com&lt;/a&gt; thank you for opening this issue. Unfortunately, this improvement is not as straightforward as it may seem.&lt;/p&gt;

&lt;p&gt;I do, however, see how this is useful and important in the context of testing out change streams so we&apos;ll keep this ticket open and see when we can prioritize it.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2113221">COMPASS-6011</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1404071">COMPASS-4345</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2027807">COMPASS-5753</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>12.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 23 Feb 2022 14:59:36 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 23 weeks, 1 day 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_10257" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Documentation Changes</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="11861"><![CDATA[Not Needed]]></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>jessica.sigafoos@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 23 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>ataramina@shorecg.com</customfieldvalue>
            <customfieldvalue>anna.henningsen@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</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|i0ku5r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr1nvg:8i</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="6308">Iteration Eel</customfieldvalue>
    <customfieldvalue id="6309">Iteration Fish</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10555" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.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|i0kgb3:</customfieldvalue>

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