<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:42:04 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>[SERVER-57518] 16% performance loss switching from Count to CountDocuments</title>
                <link>https://jira.mongodb.org/browse/SERVER-57518</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Dear Server team,&lt;/p&gt;

&lt;p&gt;I&apos;m a C# dev on a team using MongoDb and I have the task to clean up the compile warnings. One warning was &quot;Count is obsolete. Use CountDocuments instead&quot;&lt;/p&gt;

&lt;p&gt;But at every occurrence in the code,&#160; at all the lines have the comment &quot;Don&apos;t use CountDocuments, it is slower&quot;, referencing Jira&#160;&lt;a href=&quot;https://jira.mongodb.org/browse/NODE-1638&quot; title=&quot;countDocuments is slower then count&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NODE-1638&quot;&gt;&lt;del&gt;NODE-1638&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I did my own tests and indeed found CountDocuments to be about 34% slower then Count (~150 ms longer). That is quite significant and thus a problem for us, as we are already having performance issues.&lt;/p&gt;

&lt;p&gt;First thinking this was a C# driver issue, I opened a ticket &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-3680&quot; title=&quot;Migrating obsolete &amp;quot;Count&amp;quot; to new methods has a problematic cost&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-3680&quot;&gt;&lt;del&gt;CSHARP-3680&lt;/del&gt;&lt;/a&gt; and had some interaction there. However, we found out that the issue already occurs on the server, thus should get a new SERVER ticket.&lt;/p&gt;

&lt;p&gt;Please read &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-3680&quot; title=&quot;Migrating obsolete &amp;quot;Count&amp;quot; to new methods has a problematic cost&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-3680&quot;&gt;&lt;del&gt;CSHARP-3680&lt;/del&gt;&lt;/a&gt; for all the details and let me know what more information you need.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1772324">SERVER-57518</key>
            <summary>16% performance loss switching from Count to CountDocuments</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="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-query-optimization">Backlog - Query Optimization</assignee>
                                    <reporter username="jochem@netwinst.nl">Jochem Bonarius</reporter>
                        <labels>
                    </labels>
                <created>Tue, 8 Jun 2021 06:51:33 +0000</created>
                <updated>Tue, 31 Oct 2023 17:05:34 +0000</updated>
                                            <version>4.4.5</version>
                    <version>4.0.25</version>
                                                                        <votes>4</votes>
                                    <watches>29</watches>
                                                                                                                <comments>
                            <comment id="5123320" author="JIRAUSER1259803" created="Thu, 19 Jan 2023 11:05:16 +0000"  >&lt;p&gt;It&apos;s been a big year and MongoDB 6.0 was released which had planned to restore the count command. As this ticket moves from being groomed into sprints to placed in the backlog, may I ask what the current state of count is, countDocuments, estimatedDocumentCount in MongoDB 6.0? Thanks!&lt;/p&gt;</comment>
                            <comment id="4859681" author="maddie.zechar" created="Tue, 27 Sep 2022 19:09:51 +0000"  >&lt;p&gt;I&apos;ve continued working on this ticket.&#160;&lt;/p&gt;

&lt;p&gt;When the agg tree is empty (the plan only exists in plan stages like suggested solution), an aggregation request will still invoke runAggregate() which will invoke plan_executor_impl:getNext() (which then calls getNextDocument).The find version of count will also invoke plan_executor_impl:getNextDocument but from executeCount(). They function roughly the same, getNextDocument() will be called in a while loop while the plan executor returns ADVANCED state. After it exits the while loop, the executeCount() retrieves the count from &lt;a href=&quot;https://github.com/10gen/mongo/blob/master/src/mongo/db/query/plan_executor_impl.cpp#L547-L548&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;root-&amp;gt;getSpecificStats()-&amp;gt;nCounted&lt;/a&gt;. We can access the same root stats for agg count (via nCounted) and get the correct amount. However, it seems it would make more sense to alter &lt;a href=&quot;https://github.com/10gen/mongo/blob/master/src/mongo/db/exec/count.cpp#L69-L108&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;exec/count so that it returns a functional WorkingSetMember&lt;/a&gt; and thus not having to &lt;a href=&quot;https://github.com/10gen/mongo/blob/master/src/mongo/db/query/plan_executor_impl.cpp#L397-L415&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;alter the logic in getNext&lt;/a&gt; (as opposed to adding logic to determine if an executor is running an agg count from inside getNextImpl)&#160;&lt;/p&gt;</comment>
                            <comment id="4462393" author="james.wahlin@10gen.com" created="Wed, 6 Apr 2022 19:20:32 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=ian.boros&quot; class=&quot;user-hover&quot; rel=&quot;ian.boros&quot;&gt;ian.boros&lt;/a&gt;&#160;- thanks for pointing me to this. I tested and we are using this optimization, setting `CursorType::kEmptyDocuments` on DocumentSourceCursor.&lt;/p&gt;</comment>
                            <comment id="4458470" author="ian.boros" created="Tue, 5 Apr 2022 17:01:55 +0000"  >&lt;p&gt;One other thing to note is that we do already have a special code path for &quot;count like&quot; operations in the DS layer, where we avoid the conversion from BSON -&amp;gt; Document. See &lt;a href=&quot;https://github.com/mongodb/mongo/blob/7d0634a03461f22ef0c0461a011bde9425f00a3b/src/mongo/db/pipeline/document_source_cursor.h#L52-L56&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;. It might be worth investigating whether this path is used for the queries that regressed.&lt;/p&gt;</comment>
                            <comment id="4447982" author="james.wahlin@10gen.com" created="Thu, 31 Mar 2022 16:04:17 +0000"  >&lt;p&gt;I spent some time investigating this and have an idea on where the aggregate command count falls short vs the count command. The answer is slightly different for an indexed count vs collection scan, so I will present both here. These findings are based on a similar reproduction to the on posted above.&#160;&lt;/p&gt;

&lt;p&gt;It is worth noting that on current master the difference I observed was roughly 16% rather than the 34% reported in this ticket.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Indexed Count&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;When running a &lt;b&gt;count command with filter&lt;/b&gt; with a backing index, we create a PlanStage tree that consists of a COUNT_SCAN stage with a COUNT stage as parent. This has proven to be the fastest way to generate a count and the baseline we are working against.&lt;/p&gt;

&lt;p&gt;When running an &lt;b&gt;aggregate command with filter and count&lt;/b&gt;&#160;with a backing index, we also create a COUNT_SCAN stage to access the data. Where we differ is that we do not push down the accumulator to the PlanStage level and instead maintain a $group/$project in aggregation. This results in transferring data between the PlanStage and aggregation layer (so BSONObj =&amp;gt; Document) and at least 1 additional level of recursion, incurring additional cost.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Collection Scan Count&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;When running a &lt;b&gt;count command with filter&lt;/b&gt; using a collection scan, we build a PlanStage tree with a COLLSCAN stage and a COUNT stage as parent. This is the fastest way to generate a filtered count using a collection scan.&lt;/p&gt;

&lt;p&gt;When running an &lt;b&gt;aggregate command with filter and count&lt;/b&gt; using a collection scan, we build a PlanStage tree with only a COLLSCAN stage, and then handle count generation via $group/$project in the aggregation layer. Similar to the indexed case, the main cost here is the penalty we may for moving from the PlanStage to aggregation layer as well as heavier weight accumulator/project mechanism.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fix Proposal&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;To address the discrepancy in cost using our classic engine I would propose adding optimizations that would allow an aggregation pipeline prefix such as we see here to be pushed down to the PlanStage layer and execute in an identical manner to the count command.&#160;&lt;/p&gt;</comment>
                            <comment id="4240527" author="JIRAUSER1259803" created="Fri, 10 Dec 2021 10:42:03 +0000"  >&lt;p&gt;@james.wahlin, thanks for restating the issues for clarity and pointing me to &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61332&quot; title=&quot;Introduce $approxCount stage that can work on a view&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61332&quot;&gt;&lt;del&gt;SERVER-61332&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="4233127" author="james.wahlin@10gen.com" created="Mon, 6 Dec 2021 19:32:26 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=ewan.higgs%40deliverect.com&quot; class=&quot;user-hover&quot; rel=&quot;ewan.higgs@deliverect.com&quot;&gt;ewan.higgs@deliverect.com&lt;/a&gt;&#160;there are a few things worth noting here:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;First&lt;/b&gt;, is that MongoDB can provide an O(1) fast estimated collection count. This count is a statistic maintained as part of collection metadata. Running count({}) (note the empty query filter) or estimatedCount() will return this statistic and will be a fast operation regardless of collection size. This is only available when asking for the count of all documents in the collection.&lt;/p&gt;

&lt;p&gt;The countDocuments() helper will perform a query to determine the count, regardless of the query filter provided. This is an O( n )&#160;operation and returns an exact count rather than an estimate.&lt;/p&gt;

&lt;p&gt;What count() provides that the combination of estimatedCount() and countDocuments() doesn&apos;t replace is a mechanism to switch between the fast/estimated count and the slower/exact count depending on query filter.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Second&lt;/b&gt;, when comparing apples to apples for the slower/exact count, the count() helper is roughly 30% faster than the countDocuments() helper. This is the issue we are looking to address under this ticket.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Third&lt;/b&gt;, the count() helper when run against a non-materialized view will fallback to the slower/exact count against the underlying pipeline and collection. The estimatedCount() helper has no such mechanism and fails when run against a view.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;This ticket looks to address the &lt;b&gt;second&lt;/b&gt; issue, which is to bring the countDocuments() helper performance in line with the count() helper when run with a non-empty query predicate. For the &lt;b&gt;first&lt;/b&gt; and &lt;b&gt;third&lt;/b&gt;&#160;issues we are looking to address under&#160;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-61332&quot; title=&quot;Introduce $approxCount stage that can work on a view&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-61332&quot;&gt;&lt;del&gt;SERVER-61332&lt;/del&gt;&lt;/a&gt;.&#160;&lt;/p&gt;</comment>
                            <comment id="4231533" author="JIRAUSER1259803" created="Sun, 5 Dec 2021 18:46:44 +0000"  >&lt;p&gt;From what we are seeing, the discrepency between count and countDocuments on large collections isn&apos;t 34% but thousands of %.&lt;/p&gt;

&lt;p&gt;I have 2.7m documents in a collection.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;count({})&lt;/tt&gt; takes 2ms.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;estimatedDocumentCount({})&lt;/tt&gt; takes 2ms.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;countDocuments({}, {hint: &quot;&lt;em&gt;id&lt;/em&gt;&quot;})&lt;/tt&gt; takes 1475ms.&lt;/p&gt;

&lt;p&gt;@Jochen.Bonarius&apos; aggregation and/or &lt;tt&gt;countDocuments({})&lt;/tt&gt; (without a hint) takes between 5185ms and 16000ms.&lt;/p&gt;

&lt;p&gt;countDocuments is not really usable; and while estimatedDocumentCount is quick, it doesn&apos;t work with queries, making it not useful.&lt;/p&gt;

&lt;p&gt;With the release of pymongo 4.0 removing count, fixing this should be a high priority.&lt;/p&gt;</comment>
                            <comment id="3902107" author="kyle.suarez" created="Fri, 25 Jun 2021 22:07:28 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jochem%40netwinst.nl&quot; class=&quot;user-hover&quot; rel=&quot;jochem@netwinst.nl&quot;&gt;jochem@netwinst.nl&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;I&apos;m sorry for the troubles you&apos;ve been having switching over from &lt;tt&gt;count&lt;/tt&gt; to &lt;tt&gt;countDocuments&lt;/tt&gt;. As I&apos;m sure has been previously mentioned, the drivers have deprecated &lt;tt&gt;count&lt;/tt&gt; due to various issues with the command, including accuracy in certain situations, but I acknowledge that the performance decrease when switching to the accurate count is not a great user experience. I&apos;m adding this ticket to the Query Execution queue and we will schedule this performance improvement work along with our other coming projects. Please continue to watch this ticket for further updates.&lt;/p&gt;

&lt;p&gt;In terms of immediately addressing the deprecation warning issues, I would recommend you try the workarounds suggested in &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-3680&quot; title=&quot;Migrating obsolete &amp;quot;Count&amp;quot; to new methods has a problematic cost&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-3680&quot;&gt;&lt;del&gt;CSHARP-3680&lt;/del&gt;&lt;/a&gt;, including using &lt;tt&gt;runCommand&lt;/tt&gt; to run the count command.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br/&gt;
Kyle&lt;/p&gt;</comment>
                            <comment id="3885231" author="eric.sedor" created="Thu, 17 Jun 2021 16:41:24 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jochem%40netwinst.nl&quot; class=&quot;user-hover&quot; rel=&quot;jochem@netwinst.nl&quot;&gt;jochem@netwinst.nl&lt;/a&gt; does the syntax &lt;tt&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=firstname.lastname&quot; class=&quot;user-hover&quot; rel=&quot;firstname.lastname&quot;&gt;firstname.lastname&lt;/a&gt;&lt;/tt&gt; work for you?&lt;/p&gt;</comment>
                            <comment id="3884078" author="JIRAUSER1260066" created="Thu, 17 Jun 2021 06:50:26 +0000"  >&lt;p&gt;@Eric Sedor Thank you, please let me know what I/we can do to assist.&lt;/p&gt;

&lt;p&gt;p.s. can someone tell me how to tag a user on Jira? The @ trick doesn&apos;t seem to work.&lt;/p&gt;</comment>
                            <comment id="3883298" author="eric.sedor" created="Wed, 16 Jun 2021 21:43:48 +0000"  >&lt;p&gt;Thanks &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jochem%40netwinst.nl&quot; class=&quot;user-hover&quot; rel=&quot;jochem@netwinst.nl&quot;&gt;jochem@netwinst.nl&lt;/a&gt;, mechanically, it does seem like count() with a query predicate should be similar to countDocuments, but I&apos;ll pass this to an appropriate team to consider in detail.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10420">
                    <name>Backports</name>
                                                                <inwardlinks description="backports">
                                        <issuelink>
            <issuekey id="2435456">SERVER-80800</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="313139">SERVER-25898</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                            <outwardlinks description="causes">
                                        <issuelink>
            <issuekey id="1736432">CSHARP-3680</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="590831">NODE-1638</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2125947">SERVER-69257</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="1777705">SERVER-84948</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="390060">SERVER-29444</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>15.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25126"><![CDATA[Query Optimization]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_13552" key="com.go2group.jira.plugin.crm:crm_generic_field">
                        <customfieldname>Case</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[[5002K00000xjGJHQA2]]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 8 Jun 2021 15:30:48 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 2 weeks, 6 days 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>PM-3562</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>joseph.kanaan@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 2 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-query-optimization</customfieldvalue>
            <customfieldvalue>eric.sedor@mongodb.com</customfieldvalue>
            <customfieldvalue>ewan.higgs@deliverect.com</customfieldvalue>
            <customfieldvalue>ian.boros@mongodb.com</customfieldvalue>
            <customfieldvalue>james.wahlin@mongodb.com</customfieldvalue>
            <customfieldvalue>jochem@netwinst.nl</customfieldvalue>
            <customfieldvalue>kyle.suarez@mongodb.com</customfieldvalue>
            <customfieldvalue>maddie.zechar@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzkc8v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr29rj:</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="5887">QO 2022-04-04</customfieldvalue>
    <customfieldvalue id="5889">QO 2022-04-18</customfieldvalue>
    <customfieldvalue id="5891">QO 2022-05-02</customfieldvalue>
    <customfieldvalue id="5893">QO 2022-05-16</customfieldvalue>
    <customfieldvalue id="5895">QO 2022-05-30</customfieldvalue>
    <customfieldvalue id="5897">QO 2022-06-13</customfieldvalue>
    <customfieldvalue id="5899">QO 2022-06-27</customfieldvalue>
    <customfieldvalue id="5901">QO 2022-07-11</customfieldvalue>
    <customfieldvalue id="5903">QO 2022-07-25</customfieldvalue>
    <customfieldvalue id="5905">QO 2022-08-08</customfieldvalue>
    <customfieldvalue id="5907">QO 2022-08-22</customfieldvalue>
    <customfieldvalue id="5909">QO 2022-09-05</customfieldvalue>
    <customfieldvalue id="5911">QO 2022-09-19</customfieldvalue>
    <customfieldvalue id="5913">QO 2022-10-03</customfieldvalue>
    <customfieldvalue id="5914">QE 2022-10-17</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10750" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Steps To Reproduce</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;Run in shell (Robo 3T 1.2.1 doesnt know countDocuments, so we wrote it out fully)&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;function stopwatch(func) {&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;    var iters = &lt;/span&gt;&lt;span style=&quot;color: #009900; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;10&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;;&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;    var start = &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;new&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; Date();&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;    &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;for&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;(var i=&lt;/span&gt;&lt;span style=&quot;color: #009900; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;0&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;; i&amp;lt;iters; i++) {&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;        func();&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;    }&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;    var end = &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;new&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; Date();&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;    print((end-start)/iters + &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; ms&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;);&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;}&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;stopwatch(() =&amp;gt; db.largeCollection.count({Om:&lt;/span&gt;&lt;span style=&quot;color: #009900; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;0&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;}));&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;stopwatch(() =&amp;gt; db.largeCollection.aggregate([{$match: {Om:&lt;/span&gt;&lt;span style=&quot;color: #009900; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;0&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;}}, {$group: {_id: &lt;/span&gt;&lt;span style=&quot;color: #006699; font-weight: bold; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;null&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;, count: {$sum:&lt;/span&gt;&lt;span style=&quot;color: #009900; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;1&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;}}}]))&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                    <customfieldvalue><![CDATA[eric.sedor@mongodb.com]]></customfieldvalue>
    

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzjyhz:</customfieldvalue>

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