<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:34:34 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>[GODRIVER-610] Scope &amp; Design Improved BSON Support</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-610</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;p&gt;After receiving feedback on the BSON library, a new design for several components is required. This design should encompass the needs of users migrating from the community driver, users who need a high performance BSON implementation, and those who work with BSON directly but do not require a low level interface.&lt;/p&gt;</description>
                <environment></environment>
        <key id="623508">GODRIVER-610</key>
            <summary>Scope &amp; Design Improved BSON Support</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="9">Done</resolution>
                                        <assignee username="kris.brandow@mongodb.com">Kristofer Brandow</assignee>
                                    <reporter username="kris.brandow@mongodb.com">Kristofer Brandow</reporter>
                        <labels>
                            <label>beta</label>
                    </labels>
                <created>Wed, 24 Oct 2018 15:24:10 +0000</created>
                <updated>Fri, 21 Dec 2018 16:11:03 +0000</updated>
                            <resolved>Wed, 14 Nov 2018 19:44:24 +0000</resolved>
                                                    <fixVersion>0.0.18</fixVersion>
                                    <component>BSON</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="2062203" author="kris.brandow" created="Wed, 14 Nov 2018 19:44:01 +0000"  >&lt;p&gt;Code Reviews: &lt;a href=&quot;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/431549&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/431549&lt;/a&gt;&#160;and &lt;a href=&quot;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/433195&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.gerrithub.io/c/mongodb/mongo-go-driver/+/433195&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="2062156" author="xgen-internal-githook" created="Wed, 14 Nov 2018 19:22:24 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Kris Brandow&apos;, &apos;email&apos;: &apos;kris@mongodb.com&apos;, &apos;username&apos;: &apos;skriptble&apos;}
&lt;p&gt;Message: Redesign Document, Array, Element, and Value types&lt;/p&gt;

&lt;p&gt;Migration Notes:&lt;br/&gt;
The Document, Element, Value, and Array types have been redesign and&lt;br/&gt;
rewritten. They have been renamed Doc, Elem, Val, and Arr respectively.&lt;br/&gt;
And additional type, MDoc, has been created.&lt;/p&gt;

&lt;p&gt;The Value type no longer stores values as a slice of bytes,&lt;br/&gt;
instead opting for a compact 32byte representation that stores values&lt;br/&gt;
closer to native Go types. An empty Value is equivalent to a BSON Null.&lt;br/&gt;
All of the methods in this package will treat Value{} and&lt;br/&gt;
bson.Null() as the same.&lt;/p&gt;

&lt;p&gt;The Element type is much simpler and adds a key to a Value.&lt;/p&gt;

&lt;p&gt;The Document and Array types have been simplified, removing many of&lt;br/&gt;
their methods, and making them conceptually two different types, instead&lt;br/&gt;
of building an Array on top of a Document. Their methods have also been&lt;br/&gt;
updated to handle easier usage of Element and Value instances.&lt;/p&gt;

&lt;p&gt;The constructors have been removed and replaced with a simpler&lt;br/&gt;
construction system that uses functions. There is a symmetry between&lt;br/&gt;
these functions and the methods on the Value type. The input to the&lt;br/&gt;
constructor matches the output of the Value method, for example this is&lt;br/&gt;
valid: bson.Double(val.Double()).&lt;/p&gt;

&lt;p&gt;The BSON primitive types have been moved from the bson package to a new&lt;br/&gt;
package called primitive. The types that were (briefly) called&lt;br/&gt;
&lt;b&gt;Primitive are now call primitive.&lt;/b&gt;, e.g.&lt;br/&gt;
RegexPrimitive-&amp;gt;primitive.Regex.&lt;/p&gt;

&lt;p&gt;The Doc and MDoc types are functionally equivalents of D and M, but with&lt;br/&gt;
much higher type safety. Because Doc, MDoc, Arr, Elem, and Val form a&lt;br/&gt;
closed systems, and because it&apos;s not possible to create an invalid Val&lt;br/&gt;
type, Doc, MDoc, and Arr never return errors when Marshaling to BSON.&lt;br/&gt;
Both Doc and MDoc have depth traversal capabilities, so looking up a key&lt;br/&gt;
thats several subdocuments deep can be done with a single method call,&lt;br/&gt;
and in the case of MDoc can be done so in a higher performance manner.&lt;/p&gt;

&lt;p&gt;When migrating from Document to Doc, users should ensure they reassign&lt;br/&gt;
the return of Append, Prepend, and Set to the doc. With Document, one&lt;br/&gt;
could call Append and it would modify the original document, the new Doc&lt;br/&gt;
type does not operate in this manner and operates similar to a regular&lt;br/&gt;
slice.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-413&quot; title=&quot;Implement Improved BSON Design&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-413&quot;&gt;&lt;del&gt;GODRIVER-413&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-610&quot; title=&quot;Scope &amp;amp; Design Improved BSON Support&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-610&quot;&gt;&lt;del&gt;GODRIVER-610&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change-Id: I353a83b7c8f8c5fa0c2552de9ff8bc78d55c50bc&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-go-driver/commit/bc03cee70acb5c99b3eabea12b3e3cfe2e6f3232&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-go-driver/commit/bc03cee70acb5c99b3eabea12b3e3cfe2e6f3232&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2057287" author="ian@10gen.com" created="Fri, 9 Nov 2018 16:37:01 +0000"  >&lt;p&gt;2018-11-09: target date of 2018-11-23 (2 weeks)&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="541629">GODRIVER-413</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="631879">GODRIVER-634</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="631537">GODRIVER-632</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hu1ehr:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>