On 3.6, a $rename operator applied to a destination field that already exists, and has the same value as the source field, will not update that field. On 3.4, the field type is changed as expected.
db.test.insert({to:NumberLong(100), from:100}); db.test.update({},{$rename:{from:"to"}}); db.test.findOne() // 3.6: { "to" : NumberLong(100) } // 3.4: { "to" : 100 }