<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:46: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-17943] add $filter expression to $project to work with $map and $reduce</title>
                <link>https://jira.mongodb.org/browse/SERVER-17943</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Similar to $map (and in combination with possible $reduce &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-17258&quot; title=&quot;Add $reduce expression operator for rollup of arrays&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-17258&quot;&gt;&lt;del&gt;SERVER-17258&lt;/del&gt;&lt;/a&gt;) adding $filter would complete the generic framework for handling any sort of array processing during projection in agg.&lt;/p&gt;</description>
                <environment></environment>
        <key id="194912">SERVER-17943</key>
            <summary>add $filter expression to $project to work with $map and $reduce</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</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="charlie.swanson@mongodb.com">Charlie Swanson</assignee>
                                    <reporter username="asya.kamsky@mongodb.com">Asya Kamsky</reporter>
                        <labels>
                    </labels>
                <created>Wed, 8 Apr 2015 21:13:11 +0000</created>
                <updated>Wed, 17 Jan 2018 17:52:07 +0000</updated>
                            <resolved>Thu, 7 May 2015 21:43:32 +0000</resolved>
                                                    <fixVersion>3.1.3</fixVersion>
                                    <component>Aggregation Framework</component>
                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="1013454" author="asya" created="Tue, 25 Aug 2015 00:33:42 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=oleg%40evergage.com&quot; class=&quot;user-hover&quot; rel=&quot;oleg@evergage.com&quot;&gt;oleg@evergage.com&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;My apologies, I was too terse in my description.   When I said &quot;new features&quot; I meant that a general rule about whether to backport any feature is whether it&apos;s a new user facing feature that requires the drivers (among other things) to provide support for it.   While I understand that new aggregation operator can be used without special support from the drivers, nonetheless our new feature checklist includes noting whether drivers need to add any specific support for the feature (as an example, see &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-1315&quot; title=&quot;Refactor LINQ infrastructure to enable support of new aggregation operators in server 3.2.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-1315&quot;&gt;&lt;del&gt;CSHARP-1315&lt;/del&gt;&lt;/a&gt; which is refactoring LINQ code to be able to add support for new aggregation operators, stages, etc).&lt;/p&gt;

&lt;p&gt;I understand your frustration when you see that a relatively isolated new functionality is added to a component in the upcoming version that you may badly need in the current version - but consider the amount of work required if part of adding this new feature included refactoring or improving parts of our test framework and there isn&apos;t a way to backport the feature &lt;b&gt;with its tests&lt;/b&gt; without making major changes to current code.  Worse yet may be if the new feature turns out to have some very bad performance side-effect or even cause a crash - it&apos;s much simpler to manage that just in the version that the feature is released in, especially since this new feature won&apos;t be released to users till 3.2 is GA.&lt;/p&gt;

&lt;p&gt;I don&apos;t believe that we are unique in this approach - patch or dot releases are meant for only minor changes, usually reserved for bug fixes, performance optimizations, security patches and such.&lt;/p&gt;

&lt;p&gt;Asya Kamsky&lt;/p&gt;
</comment>
                            <comment id="1013333" author="oleg@evergage.com" created="Mon, 24 Aug 2015 21:26:56 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=asya&quot; class=&quot;user-hover&quot; rel=&quot;asya&quot;&gt;asya&lt;/a&gt;, I apologize if this is not an appropriate place to register this comment, but could you please ask MongoDB leadership to reflect on this &quot;no new features&quot; policy.&lt;/p&gt;

&lt;p&gt;I&apos;ve noticed many a regression in WiredTiger performance or functionality (just look at all the 3.0.x releases, specifically this new 3.0.6 release and the things that it fixes). E.g. the side effect of fixing &lt;a href=&quot;https://jira.mongodb.org/browse/WT-1989&quot; title=&quot;Improvements to log slot freeing to improve thread scalability&quot; class=&quot;issue-link&quot; data-issue-key=&quot;WT-1989&quot;&gt;&lt;del&gt;WT-1989&lt;/del&gt;&lt;/a&gt; producing a critical bug (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-19673&quot; title=&quot;Excessive memory allocated by WiredTiger journal&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-19673&quot;&gt;&lt;del&gt;SERVER-19673&lt;/del&gt;&lt;/a&gt;) that should have been a stop-ship on the 3.0.5 series, and an immediate 3.0.6 with only that fix should&apos;ve been released. With all these WT regressions, I find it hard to believe that the WT branch for MongoDB 3.0 is obeying the &quot;no new features&quot; rule internally.&lt;/p&gt;

&lt;p&gt;$filter and $arrayElemAt (&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-4589&quot; title=&quot;aggregation:  need an array indexing operator&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-4589&quot;&gt;&lt;del&gt;SERVER-4589&lt;/del&gt;&lt;/a&gt;) are critical tools for being able to extract sufficiently fast aggregation performance out of MongoDB for when objects contain array data. We&apos;ve been running with an a custom $elemMatch implementation on 2.4, and now with a backport of these features  ($filter and $arrayElemAt in $project) on 2.6 and 3.0.&lt;/p&gt;

&lt;p&gt;These are lightweight, low-complexity, low-risk backports that enable aggregations that are simply impossible in anything other than 3.1. Alternatives in 3.0 and below are MapReduce (too slow) and &quot;$unwind/$group by $id&quot; stages, which is an expensive group that has performance limits.&lt;/p&gt;

&lt;p&gt;My main point is that since the development process is not actually producing a 3.0.x branch that&apos;s sufficiently stable release-to-release, then it&apos;s a shame/unfortunate to watch small, but very useful features get left behind into a future 3.2.x release (including all the waiting time for the 3.2.x branch to be truly production-ready with a few point releases under its belt).&lt;/p&gt;

&lt;p&gt;Anyway, if anyone is interested in building your own backports:&lt;/p&gt;

&lt;p&gt;3.0 backport: &lt;a href=&quot;https://github.com/evergage/mongo/commit/be4e427de6df5ebe81016fe87f3a12af80782437&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/evergage/mongo/commit/be4e427de6df5ebe81016fe87f3a12af80782437&lt;/a&gt;&lt;br/&gt;
2.6 backport: &lt;a href=&quot;https://github.com/evergage/mongo/commit/c6b8dba7f134de5cd698260efb56ad5c2ccc2a39&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/evergage/mongo/commit/c6b8dba7f134de5cd698260efb56ad5c2ccc2a39&lt;/a&gt; and &lt;a href=&quot;https://github.com/evergage/mongo/commit/31fca056b3be1b4fec7c003f3ddf0a61e42e498d&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/evergage/mongo/commit/31fca056b3be1b4fec7c003f3ddf0a61e42e498d&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="1010718" author="asya" created="Thu, 20 Aug 2015 14:33:51 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=oleg%40evergage.com&quot; class=&quot;user-hover&quot; rel=&quot;oleg@evergage.com&quot;&gt;oleg@evergage.com&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Unfortunately not - we can&apos;t back port completely new features.  &lt;/p&gt;</comment>
                            <comment id="919482" author="oleg@evergage.com" created="Wed, 20 May 2015 18:15:22 +0000"  >&lt;p&gt;Is this something that would be considered as a backport to 3.0 or 2.6 series?&lt;/p&gt;</comment>
                            <comment id="908148" author="xgen-internal-githook" created="Thu, 7 May 2015 21:40:10 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;username&apos;: u&apos;cswanson310&apos;, u&apos;name&apos;: u&apos;Charlie Swanson&apos;, u&apos;email&apos;: u&apos;cswanson310@gmail.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-17943&quot; title=&quot;add $filter expression to $project to work with $map and $reduce&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-17943&quot;&gt;&lt;del&gt;SERVER-17943&lt;/del&gt;&lt;/a&gt; Add $filter aggregation expression&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/6b38c7a53f2e284583199c12b4b9f6cd8d69004a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/6b38c7a53f2e284583199c12b4b9f6cd8d69004a&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="210509">CSHARP-1315</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="45484">SERVER-6612</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="72103">SERVER-9370</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="152306">SERVER-14876</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="203463">SERVER-18423</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="229457">CSHARP-1405</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="209231">DRIVERS-234</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>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 7 May 2015 17:42:55 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        8 years, 25 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>asya.kamsky@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            8 years, 25 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>asya.kamsky@mongodb.com</customfieldvalue>
            <customfieldvalue>charlie.swanson@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>oleg@evergage.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrl8uf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hs7x4v:</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_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="490">Quint Iteration 3</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_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|hsa1qv:</customfieldvalue>

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