<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:09:26 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-5620] _id index underused</title>
                <link>https://jira.mongodb.org/browse/SERVER-5620</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;I&apos;m not sure if the functionality I expect is intended, but the results I got are certainly unexpected.&lt;br/&gt;
Consider the following schema:&lt;br/&gt;
{_id:&lt;/p&gt;
{t:&amp;lt;time&amp;gt;, i:&amp;lt;integer&amp;gt;}
&lt;p&gt;, m:&amp;lt;string&amp;gt;}&lt;br/&gt;
And a collection, containing about 1600 documents with different values.&lt;br/&gt;
I query the collection (trying to get the latest element by &quot;_id.t&quot;) with:&lt;br/&gt;
db.coll.find().sort(&lt;/p&gt;
{&quot;_id.t&quot;:-1}
&lt;p&gt;).limit(1)&lt;br/&gt;
It&apos;s horribly slow, up to several hundred milliseconds.&lt;br/&gt;
When I run explain() on it it says:&lt;br/&gt;
{&lt;br/&gt;
        &quot;cursor&quot; : &quot;BasicCursor&quot;,&lt;br/&gt;
        &quot;nscanned&quot; : 589,&lt;br/&gt;
        &quot;nscannedObjects&quot; : 589,&lt;br/&gt;
        &quot;n&quot; : 1,&lt;br/&gt;
        &quot;scanAndOrder&quot; : true,&lt;br/&gt;
        &quot;millis&quot; : 113,&lt;br/&gt;
        &quot;nYields&quot; : 1,&lt;br/&gt;
        &quot;nChunkSkips&quot; : 0,&lt;br/&gt;
        &quot;isMultiKey&quot; : false,&lt;br/&gt;
        &quot;indexOnly&quot; : false,&lt;br/&gt;
        &quot;indexBounds&quot; : {&lt;/p&gt;

&lt;p&gt;        }&lt;br/&gt;
}&lt;br/&gt;
So, it appears to scan the table sequentially.&lt;br/&gt;
I have to add index by &lt;/p&gt;
{&quot;_id.t&quot;:-1}
&lt;p&gt;, to be able to query the collection fast, then explain returns more satistactory results:&lt;br/&gt;
{&lt;br/&gt;
        &quot;cursor&quot; : &quot;BtreeCursor &lt;em&gt;id.t&lt;/em&gt;-1&quot;,&lt;br/&gt;
        &quot;nscanned&quot; : 1,&lt;br/&gt;
        &quot;nscannedObjects&quot; : 1,&lt;br/&gt;
        &quot;n&quot; : 1,&lt;br/&gt;
        &quot;millis&quot; : 0,&lt;br/&gt;
        &quot;nYields&quot; : 0,&lt;br/&gt;
        &quot;nChunkSkips&quot; : 0,&lt;br/&gt;
        &quot;isMultiKey&quot; : false,&lt;br/&gt;
        &quot;indexOnly&quot; : false,&lt;br/&gt;
        &quot;indexBounds&quot; : {&lt;br/&gt;
                &quot;_id.t&quot; : [&lt;br/&gt;
                        [&lt;br/&gt;
                                &lt;/p&gt;
{
                                        &quot;$maxElement&quot; : 1
                                }
&lt;p&gt;,&lt;/p&gt;
                                {
                                        &quot;$minElement&quot; : 1
                                }
&lt;p&gt;                        ]&lt;br/&gt;
                ]&lt;br/&gt;
        }&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;I thought that &quot;_id&quot; index behaves like the others, so I can query, then sort by its subelements left-to-right. Is this not the case? &lt;br/&gt;
P.S. I ruled out query optimizer by using hint({_id:1}) &amp;#8211; didn&apos;t help, it used btree cursor, but still scanned entire collection.&lt;/p&gt;

&lt;p&gt;So, is this something that should be expected (then, I think, documentation should state that this is a special case, since &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Indexes#Indexes-UsingDocumentsasKeys&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.mongodb.org/display/DOCS/Indexes#Indexes-UsingDocumentsasKeys&lt;/a&gt; states otherwise), or is it a bug that should be fixed?&lt;/p&gt;</description>
                <environment></environment>
        <key id="36400">SERVER-5620</key>
            <summary>_id index underused</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</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="-1">Unassigned</assignee>
                                    <reporter username="onyxmaster">Aristarkh Zagorodnikov</reporter>
                        <labels>
                            <label>_id</label>
                            <label>document</label>
                            <label>indexing</label>
                            <label>query</label>
                    </labels>
                <created>Mon, 16 Apr 2012 16:33:58 +0000</created>
                <updated>Fri, 7 Mar 2014 01:03:53 +0000</updated>
                            <resolved>Mon, 16 Apr 2012 16:41:32 +0000</resolved>
                                    <version>2.0.4</version>
                                                    <component>Index Maintenance</component>
                    <component>Querying</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="110310" author="onyxmaster" created="Mon, 16 Apr 2012 17:02:16 +0000"  >&lt;p&gt;My bad, it appears that I wasn&apos;t reading the docs attentively =) Sorry for the false alarm.&lt;/p&gt;</comment>
                            <comment id="110307" author="onyxmaster" created="Mon, 16 Apr 2012 16:55:11 +0000"  >&lt;p&gt;As a side note, it only happens when sorting on a &quot;subkey&quot;, so this is not exactly the same case that is described in the documentation.&lt;/p&gt;</comment>
                            <comment id="110294" author="eliot" created="Mon, 16 Apr 2012 16:41:32 +0000"  >&lt;p&gt;An index on &lt;/p&gt;
{ &quot;_id&quot; : 1 }
&lt;p&gt; is very different than an index on &lt;/p&gt;
{ &quot;_id.t&quot; : 1 }
&lt;p&gt; &lt;/p&gt;

&lt;p&gt;this is true of the _id index and all others.&lt;/p&gt;

&lt;p&gt;will try to make the documentation clearer &lt;/p&gt;</comment>
                            <comment id="110293" author="scotthernandez" created="Mon, 16 Apr 2012 16:40:23 +0000"  >&lt;p&gt;What you are describing is how indexes work on embedded documents (which is what you get when you put a document in the _id field). See the docs here: &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Indexes#Indexes-UsingDocumentsasKeys&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.mongodb.org/display/DOCS/Indexes#Indexes-UsingDocumentsasKeys&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="110289" author="onyxmaster" created="Mon, 16 Apr 2012 16:35:07 +0000"  >&lt;p&gt;&quot;about 1600 documents&quot; should read &quot;about 600 documents&quot; (actually 589 as first explain shows).&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10011"><![CDATA[Minor Change]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 16 Apr 2012 16:40:23 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        11 years, 44 weeks, 2 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_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>ian@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            11 years, 44 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Old_Backport</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[No]]></customfieldvalue>

                        </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>onyxmaster</customfieldvalue>
            <customfieldvalue>eliot</customfieldvalue>
            <customfieldvalue>scotthernandez</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hro5mf:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>22853</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

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

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