<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 02:58:24 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-1904] map-reduce produces different results for an indexed query</title>
                <link>https://jira.mongodb.org/browse/SERVER-1904</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;I&apos;ve been investigating some unusual numbers in my map-reduce results &lt;br/&gt;
and made an interesting discovery.  If the map reduce query is on an &lt;br/&gt;
indexed array, and more than one value in the array matches the query, &lt;br/&gt;
the document is mapped more than once.  A simple example is below: &lt;br/&gt;
// make sure the collection is empty &lt;br/&gt;
&amp;gt; db.example.drop() &lt;br/&gt;
true &lt;br/&gt;
&amp;gt; db.example.save(&lt;/p&gt;
{ arr : [1, 2] }
&lt;p&gt;) &lt;/p&gt;


&lt;p&gt;// just aggregate by _id &lt;br/&gt;
&amp;gt; map = function() &lt;/p&gt;
{ emit(this._id,  1) }
&lt;p&gt; &lt;/p&gt;

&lt;p&gt;function () { &lt;br/&gt;
    emit(this._id, 1); &lt;br/&gt;
} &lt;/p&gt;

&lt;p&gt;// count the values &lt;br/&gt;
&amp;gt; reduce = function(k,vals) &lt;/p&gt;
{ 

...     var sum=0; 
...     for(var i in vals) sum += vals[i]; 
...     return sum; 
... }
&lt;p&gt; &lt;br/&gt;
function (k, vals) { &lt;br/&gt;
    var sum = 0; &lt;br/&gt;
    for (var i in vals) &lt;/p&gt;
{ 
        sum += vals[i]; 
    }
&lt;p&gt; &lt;br/&gt;
    return sum; &lt;br/&gt;
} &lt;/p&gt;

&lt;p&gt;// the first M/R finds the document once &amp;amp; produces the correct count &lt;br/&gt;
&amp;gt; res = db.example.mapReduce(map,reduce, { query : {} }) &lt;/p&gt;

&lt;p&gt;{ &lt;br/&gt;
        &quot;result&quot; : &quot;tmp.mr.mapreduce_1286336126_70&quot;, &lt;br/&gt;
        &quot;timeMillis&quot; : 16, &lt;br/&gt;
        &quot;counts&quot; : &lt;/p&gt;
{ 
                &quot;input&quot; : 1, 
                &quot;emit&quot; : 1, 
                &quot;output&quot; : 1 
        }
&lt;p&gt;, &lt;br/&gt;
        &quot;ok&quot; : 1, &lt;br/&gt;
} &lt;br/&gt;
&amp;gt; db&lt;span class=&quot;error&quot;&gt;&amp;#91;res.result&amp;#93;&lt;/span&gt;.find() &lt;/p&gt;

{ &quot;_id&quot; : ObjectId(&quot;4cabee4ac0f7095167a5ab62&quot;), &quot;value&quot; : 1 } 
&lt;p&gt;// the second query matches the array without an index, and still &lt;br/&gt;
produces expected results &lt;br/&gt;
&amp;gt; res = db.example.mapReduce(map,reduce, { query : { arr: {$gte:0} } }) &lt;/p&gt;

&lt;p&gt;{ &lt;br/&gt;
        &quot;result&quot; : &quot;tmp.mr.mapreduce_1286336141_71&quot;, &lt;br/&gt;
        &quot;timeMillis&quot; : 12, &lt;br/&gt;
        &quot;counts&quot; : &lt;/p&gt;
{ 
                &quot;input&quot; : 1, 
                &quot;emit&quot; : 1, 
                &quot;output&quot; : 1 
        }
&lt;p&gt;, &lt;br/&gt;
        &quot;ok&quot; : 1, &lt;br/&gt;
} &lt;br/&gt;
&amp;gt; db&lt;span class=&quot;error&quot;&gt;&amp;#91;res.result&amp;#93;&lt;/span&gt;.find() &lt;/p&gt;

{ &quot;_id&quot; : ObjectId(&quot;4cabee4ac0f7095167a5ab62&quot;), &quot;value&quot; : 1 } 
&lt;p&gt;// now index on the array and run the exact same M/R - note that it &lt;br/&gt;
now has 2 inputs &amp;amp; 2 emits, and the count has doubled &lt;br/&gt;
&amp;gt; db.example.ensureIndex(&lt;/p&gt;
{arr:1}
&lt;p&gt;) &lt;br/&gt;
&amp;gt; res = db.example.mapReduce(map,reduce, { query : { arr: {$gte:0} } }) &lt;/p&gt;

&lt;p&gt;{ &lt;br/&gt;
        &quot;result&quot; : &quot;tmp.mr.mapreduce_1286336171_72&quot;, &lt;br/&gt;
        &quot;timeMillis&quot; : 15, &lt;br/&gt;
        &quot;counts&quot; : &lt;/p&gt;
{ 
                &quot;input&quot; : 2, 
                &quot;emit&quot; : 2, 
                &quot;output&quot; : 1 
        }
&lt;p&gt;, &lt;br/&gt;
        &quot;ok&quot; : 1, &lt;br/&gt;
} &lt;br/&gt;
&amp;gt; db&lt;span class=&quot;error&quot;&gt;&amp;#91;res.result&amp;#93;&lt;/span&gt;.find() &lt;/p&gt;

{ &quot;_id&quot; : ObjectId(&quot;4cabee4ac0f7095167a5ab62&quot;), &quot;value&quot; : 2 } 

&lt;p&gt;This seems bad - is this expected behavior?  &lt;/p&gt;</description>
                <environment>Ubuntu 10.0.4 on EC2</environment>
        <key id="13276">SERVER-1904</key>
            <summary>map-reduce produces different results for an indexed query</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="9">Done</resolution>
                                        <assignee username="eliot">Eliot Horowitz</assignee>
                                    <reporter username="iragsdale">Ian Ragsdale</reporter>
                        <labels>
                    </labels>
                <created>Wed, 6 Oct 2010 17:51:40 +0000</created>
                <updated>Tue, 12 Jul 2016 00:19:24 +0000</updated>
                            <resolved>Tue, 9 Nov 2010 23:36:45 +0000</resolved>
                                    <version>1.6.2</version>
                                    <fixVersion>1.7.3</fixVersion>
                                    <component>Index Maintenance</component>
                                        <votes>1</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="20196" author="auto" created="Tue, 9 Nov 2010 23:40:23 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;login&apos;: &apos;erh&apos;, &apos;name&apos;: &apos;Eliot Horowitz&apos;, &apos;email&apos;: &apos;eliot@10gen.com&apos;}
&lt;p&gt;Message: test for &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-1904&quot; title=&quot;map-reduce produces different results for an indexed query&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-1904&quot;&gt;&lt;del&gt;SERVER-1904&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
/mongodb/mongo/commit/d14cb30a7a1041e7e3f57f3837cf270f0bbd86d2&lt;/p&gt;</comment>
                            <comment id="20195" author="auto" created="Tue, 9 Nov 2010 23:37:02 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;login&apos;: &apos;erh&apos;, &apos;name&apos;: &apos;Eliot Horowitz&apos;, &apos;email&apos;: &apos;eliot@10gen.com&apos;}
&lt;p&gt;Message: check for dups on multikey indexes &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-1904&quot; title=&quot;map-reduce produces different results for an indexed query&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-1904&quot;&gt;&lt;del&gt;SERVER-1904&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
/mongodb/mongo/commit/31a3c0bc0f41db8b9146ca5af019d7da91675dab&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>2.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>Tue, 9 Nov 2010 23:37:02 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        13 years, 15 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_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>ramon.fernandez@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            13 years, 15 weeks, 1 day 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>auto</customfieldvalue>
            <customfieldvalue>eliot</customfieldvalue>
            <customfieldvalue>iragsdale</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrpdon:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>21875</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|hs9xgv:</customfieldvalue>

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