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

Incorrect behavior when chaining multiple `where` on the same field

    • Type: Icon: Task Task
    • Resolution: Done
    • 5.0.0
    • Affects Version/s: None
    • Component/s: None
    • None

      When chaining two where criteria on the same field, former ones will be ignored, which should be a bug.

      For example, User.where(role: 1).where(role: 2) now generates {{selector:

      {"role"=>2}

      }}, but the expected result should be selector: {"role"=>{"$in"=>[]}}.

      Other examples:

      User.where(role: 1).in(role: [2, 3]) generates selector: {"role"=>{"$in"=>[]}}, this is correct. But User.in(role: [2, 3]).where(role: 1) generates {{selector:

      {"role"=>1}

      }}, which should not be right.

      User.in(role: [1, 2]).in(role: [2, 3]) can correctly generate selector: {"role"=>{"$in"=>[2]}}, but User.where(:role.in => [1, 2]).where(:role.in => [2, 3]) generates selector: {"role"=>{"$in"=>[2, 3]}}.

            Assignee:
            Unassigned Unassigned
            Reporter:
            calfzhou calfzhou
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: