Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-1475

{field: {$type:"array"}} should return documents where "field" is an array

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: 1.4.4
    • Fix Version/s: 3.5.7
    • Component/s: Querying
    • Labels:
      None
    • Environment:
      Ubuntu 10.04(lucid), x64
    • Backwards Compatibility:
      Minor Change
    • Operating System:
      ALL
    • Sprint:
      Query 2017-05-08, Query 2017-05-29

      Description

      Operator $type does not finds array (type=4) elements.

      It tested db, 'aList' field is array. There are records with empty arrays and not empty.
      But request to count elemets by type = array brings zero (0) results;
      >db.mydata.count({ aList: {$type: 4 } }); //type = Array
      0

      Meantime, the following check shows that there are arrays, and som of them are non-empty:
      > var obj = db.mydata.count({ aList: {$type:3} }); //type = Object
      > obj
      33276

      > var zero = db.mydata.count({ aList: {$size: 0 } }); //empty arrays
      > zero
      421251
      > var all = db.mydata.count({ }); //all records
      > all
      454527
      > all - zero // number of non- empty arrays
      33276

      As you see, obj == (all - zero) - all arrays are treated as Objects(type=3)!
      Expected: array fileds should be treated as Arrays (type=4).

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                14 Vote for this issue
                Watchers:
                23 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: