-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Index Maintenance, Write Ops
-
None
-
Storage Execution
-
ALL
The AccessMethod code above the indexes groups values into added, removed, and unchanged based on value comparisons. Since this doesn't consider types, all values where only the type changed are considered "unchanged" and the index is not notified of the change.
> db.foo.insert({_id:1, a:1}) WriteResult({ "nInserted" : 1 }) > db.foo.ensureIndex({a:1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } > db.foo.find({a:1}, {a:1, _id:0}) { "a" : 1 } > db.foo.save({_id:1, a: NumberLong(1)}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.foo.find({a:1}, {a:1, _id:0}) { "a" : 1 } > db.foo.find({a:1}, {a:1, _id:0}).hint({$natural: 1}) { "a" : NumberLong(1) }
- related to
-
SERVER-16801 update considers a change in numerical type to be a noop
- Closed