'Where' appends instead of overwrites?

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Won't Fix
    • Priority: Major - P3
    • 12_01_17
    • Affects Version/s: 5.1.4
    • Component/s: None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      We have been using Mongoid 4.0.2 with Moped, and in this environment where has been behaving like this:

      class TestModel
      include Mongoid::Document
      end

      id1 = BSON::ObjectId.new
      id3 = BSON::ObjectId.new
      id2 = BSON::ObjectId.new

      criteria = TestModel.where(:_id.in => [id1, id2])

      1. => #<Mongoid::Criteria
      2. selector: {"_id"=>
        Unknown macro: {"$in"=>[BSON}

        }

      3. options: {}
      4. class: TestModel
      5. embedded: false>
      1. Mongo 2.6
      2. Mongoid 4
      3. It overwrite the criteria
        criteria = criteria.where(:_id.in => [id3])
      4. => #<Mongoid::Criteria
      5. selector: {"_id"=>
        Unknown macro: {"$in"=>[BSON}

        }

      6. options: {}
      7. class: TestModel
      8. embedded: false>

      We're in the process of upgrading to Mongo 3.x, which requires going to Mongoid 5.x (we're going to 5.1.4), and instead of the above behavior, it looks like where is appending to the criteria. Here is an example of what we see (using the same test as above):

      criteria = TestModel.where(:_id.in => [id1, id2])
      criteria
      => #<Mongoid::Criteria
      selector: {"_id"=>{"$in"=>[BSON::ObjectId('57fd1185685ad43e358b5d0a'), BSON::ObjectId('57fd1185685ad43e358b5d0b')]}}
      options: {}
      class: TestModel
      embedded: false>

      criteria = criteria.where(:_id.in => [id3])
      => #<Mongoid::Criteria
      selector: {"_id"=>{"$in"=>[BSON::ObjectId('57fd1185685ad43e358b5d0a'), BSON::ObjectId('57fd1185685ad43e358b5d0b'), BSON::ObjectId('57fd1190685ad43e358b5d0c')]}}
      options: {}
      class: TestModel
      embedded: false>

      Is this a bug? Or expected behavior?

            Assignee:
            Unassigned
            Reporter:
            Tim Boring
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: