diff --git a/db/update.cpp b/db/update.cpp index 9509a317946..3c1c5c59b05 100644 --- a/db/update.cpp +++ b/db/update.cpp @@ -842,8 +842,12 @@ namespace mongo { bool indexHack = multi && ( modsIsIndexed || ! mss->canApplyInPlace() ); - if ( indexHack ) - c->noteLocation(); + if ( indexHack ){ + if ( cc.get() ) + cc->updateLocation(); + else + c->noteLocation(); + } if ( modsIsIndexed <= 0 && mss->canApplyInPlace() ){ mss->applyModsInPlace();// const_cast(onDisk) ); diff --git a/jstests/update_multi4.js b/jstests/update_multi4.js new file mode 100644 index 00000000000..e81a19a5feb --- /dev/null +++ b/jstests/update_multi4.js @@ -0,0 +1,18 @@ + +t = db.update_mulit4; +t.drop(); + +for(i=0;i<1000;i++){ + t.insert( { _id:i , + k:i%12, + v:"v"+i%12 } ); +} + +t.ensureIndex({k:1}) + +assert.eq( 84 , t.count({k:2,v:"v2"} ) , "A0" ); + +t.update({k:2},{$set:{v:"two v2"}},false,true) + +assert.eq( 0 , t.count({k:2,v:"v2"} ) , "A1" ); +assert.eq( 84 , t.count({k:2,v:"two v2"} ) , "A2" );