From d188a16d18ef16f0bf4d48b40bdfd44bc6ae8fcd Mon Sep 17 00:00:00 2001 From: Eliot Horowitz Date: Wed, 21 Oct 2009 00:21:09 -0400 Subject: [PATCH] a little code cleaning before work on SERVER-108 --- db/update.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/db/update.cpp b/db/update.cpp index adedd3c2b3e..f220685afed 100644 --- a/db/update.cpp +++ b/db/update.cpp @@ -348,19 +348,28 @@ namespace mongo { for ( vector::const_iterator i = _mods.begin(); i != _mods.end(); ++i ) { const Mod& m = *i; BSONElement e = obj.getFieldDotted(m.fieldName); - if ( m.op == Mod::PULL || m.op == Mod::PULL_ALL ) - continue; + + switch ( m.op ){ + case Mod::PULL: + case Mod::PULL_ALL: + break; // [dm] the BSONElementManipulator statements below are for replication (correct?) - if ( m.op == Mod::INC ) { + case Mod::INC: m.inc(e); m.setElementToOurNumericValue(e); - } else { + break; + case Mod::SET: if ( e.isNumber() && m.elt.isNumber() ) { // todo: handle NumberLong: m.setElementToOurNumericValue(e); - } else + } + else { BSONElementManipulator( e ).replaceTypeAndValue( m.elt ); + } + break; + default: + uassert( "can't handle mod" , 0 ); } } return true;