Uploaded image for project: 'Mongoid'
  1. Mongoid
  2. MONGOID-4781

Make embedded matchers work the same as MongoDB server queries

    • Hide
      Please see "Upgrading to 7.2" section in documentation for more details.

      Behavior changes:

      - $and with an empty array is now an error (previously would always match)
      - $in with regexp array element will now not match (previously would match)
      - $ne with regular expression argument is now an error
      - range matches in MQL against scalars and arrays is now an error
      Show
      Please see "Upgrading to 7.2" section in documentation for more details. Behavior changes: - $and with an empty array is now an error (previously would always match) - $in with regexp array element will now not match (previously would match) - $ne with regular expression argument is now an error - range matches in MQL against scalars and arrays is now an error
    • Done
    • Refactor embedded matchers
    • Hide

      Engineer(s): Oleg Pudeyev

      2020-07-24: Updating target date by -1 week to 2020-08-07

      • Work has been moving quickly and feel it will be wrapped up over the next week, but leaving an extra week on end date as a small buffer for anything that might crop up unexpectedly.
      • 2 tickets left, one of which is already in code review.

      2020-07-10: Setting initial target date to 2020-08-14

      • Oleg has worked on this epic between other higher priority work. Work began approximately 9 months ago, however the original end date was removed in January when he moved to focusing on FLE.
      • Setting a new end date of approximately one month from now.
      • Currently Oleg has been writing tests.
      • There is one more feature in this epic to support logical operators under $elemMatch (which was the initiating proposition for this epic), which Oleg expects to get to in 1-2 weeks.

      2019-11-01 : Original estimate 2weeks


      2019-11-11 : Adding two weeks because of customer issue and atlas migration tickets.


      2020-01-02: Removing end state since Oleg is working on FLE.

      Show
      Engineer(s): Oleg Pudeyev 2020-07-24: Updating target date by -1 week to 2020-08-07 Work has been moving quickly and feel it will be wrapped up over the next week, but leaving an extra week on end date as a small buffer for anything that might crop up unexpectedly. 2 tickets left, one of which is already in code review. 2020-07-10: Setting initial target date to 2020-08-14 Oleg has worked on this epic between other higher priority work. Work began approximately 9 months ago, however the original end date was removed in January when he moved to focusing on FLE. Setting a new end date of approximately one month from now. Currently Oleg has been writing tests. There is one more feature in this epic to support logical operators under $elemMatch (which was the initiating proposition for this epic), which Oleg expects to get to in 1-2 weeks. 2019-11-01 : Original estimate 2weeks 2019-11-11 : Adding two weeks because of customer issue and atlas migration tickets. 2020-01-02: Removing end state since Oleg is working on FLE.
    • Major Change

      Currently embedded matchers are written in an awkward manner, where the matcher takes the complete criteria being matched (which includes the matcher) as the argument, rather than the argument being the argument's matcher. Part of the criteria is then ignored, because it is redundant with the matcher class. There are Matcher classes for $and, $not and $or, but not for $not. Despite there being these matcher classes, there is additional ad-hoc code to handle all of the logical operators in other operators.

      This epic will revise the API of embedded matchers to be clear, consistent and extendable, then implement specific features requested for $elemMatch and repair bugs identified along the way (e.g. $exists).

            Assignee:
            oleg.pudeyev@mongodb.com Oleg Pudeyev (Inactive)
            Reporter:
            oleg.pudeyev@mongodb.com Oleg Pudeyev (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              40 weeks, 4 days