<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 02:58:57 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-2092] Unexpected matching behaviour for current $pull with $elemMatch syntax</title>
                <link>https://jira.mongodb.org/browse/SERVER-2092</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Currently the syntax for the $pull operand is confusing and conflicts with normal behaviour of $elemMatch.&lt;/p&gt;

&lt;p&gt;Given document :&lt;/p&gt;

&lt;p&gt;{&quot;somearray&quot; : [&lt;br/&gt;
        &lt;/p&gt;
{
                &quot;a&quot; : 1,
                &quot;b&quot; : 1,
                &quot;c&quot; : 1
        }
&lt;p&gt;,&lt;br/&gt;
        &lt;/p&gt;
{
                &quot;a&quot; : 1,
                &quot;b&quot; : 1
        }
&lt;p&gt;,&lt;/p&gt;
        {
                &quot;a&quot; : 1
        }
&lt;p&gt;] }&lt;/p&gt;

&lt;p&gt;The current and expected behaviour of using $elemMatch or omitting it for an update to pull out an element is as follows :&lt;/p&gt;

&lt;p&gt;UPDATE: db.test.update({}, {$pull : {somearray : {$elemMatch : {a:1, b:1}}}})&lt;br/&gt;
EXPECTED BEHAVIOUR : partial match on first item, so pull that&lt;br/&gt;
CURRENT BEHAVIOUR : has no effect&lt;/p&gt;

&lt;p&gt;UPDATE: db.test.update({}, {$pull : {somearray : &lt;/p&gt;
{a:1, b:1}
&lt;p&gt;}})&lt;br/&gt;
EXPECTED BEHAVIOUR : exact match on second item, so pull that&lt;br/&gt;
CURRENT BEHAVIOUR : removes item 1 and 2, so it&apos;s partial matching which is the usage pattern for the $elemMatch case&lt;/p&gt;

&lt;p&gt;The end result is both behaviour that&apos;s less than intuitive and presents the problem i&apos;m currently facing with our migration to mongo : How do I remove just the second item with exact/full document matching?&lt;/p&gt;

&lt;p&gt;If this isn&apos;t a bug the $elemMatch example should be removed from the docs and the docs itself should elaborate on $pull only supporting partial matching. If it is a bug however it does present the problem if it being impossible to fix without breaking backward compatibility.&lt;/p&gt;</description>
                <environment>All</environment>
        <key id="13680">SERVER-2092</key>
            <summary>Unexpected matching behaviour for current $pull with $elemMatch syntax</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</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="remonvv">Remon van Vliet</reporter>
                        <labels>
                    </labels>
                <created>Thu, 11 Nov 2010 21:47:31 +0000</created>
                <updated>Thu, 17 Mar 2011 19:13:10 +0000</updated>
                            <resolved>Sat, 13 Nov 2010 06:23:42 +0000</resolved>
                                    <version>1.6.3</version>
                                                    <component>Querying</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="20314" author="remonvv" created="Mon, 15 Nov 2010 09:19:20 +0000"  >&lt;p&gt;I&apos;m sure it is, but then what does the specifically documented $elemMatch version of $pull add? And how does one pull just the &lt;/p&gt;
{a:1, b:1}
&lt;p&gt; element as I mentioned. I&apos;m sure the way it works now is intended. The issue is reported because the way it&apos;s intended to work isn&apos;t consistent with the syntax of other parts of the query language.&lt;/p&gt;</comment>
                            <comment id="20295" author="eliot" created="Sat, 13 Nov 2010 06:23:42 +0000"  >&lt;p&gt;$pull is supposed to be a partial match.&lt;/p&gt;</comment>
                            <comment id="20251" author="remonvv" created="Thu, 11 Nov 2010 21:48:45 +0000"  >&lt;p&gt;Sorry, the comment on EXPECTED BEHAVIOUR of case 1 should be &quot;partial match on first item, so pull that and the second item&quot;&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>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10012"><![CDATA[Major Change]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Sat, 13 Nov 2010 06:23:42 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        13 years, 14 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>
                            13 years, 14 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_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>eliot</customfieldvalue>
            <customfieldvalue>remonvv</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrpbfj:</customfieldvalue>

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

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

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