diff options
author | Scott Hernandez <scotthernandez@gmail.com> | 2013-12-11 11:00:32 -0500 |
---|---|---|
committer | Scott Hernandez <scotthernandez@gmail.com> | 2013-12-13 15:51:49 -0500 |
commit | 34738d8f39dae85b10687b207473e61b52b5b93c (patch) | |
tree | ef13e89af32eb2696824b19b7b7ca8d23ad9eb76 /src/mongo/db/ops/modifier_pull_all.cpp | |
parent | 2c54682ce88e2c4e7fe8c99baeadfece0831dbd2 (diff) | |
download | mongo-34738d8f39dae85b10687b207473e61b52b5b93c.tar.gz |
SERVER-12029: use $unset true in logbuilder, and unset mod
Diffstat (limited to 'src/mongo/db/ops/modifier_pull_all.cpp')
-rw-r--r-- | src/mongo/db/ops/modifier_pull_all.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/mongo/db/ops/modifier_pull_all.cpp b/src/mongo/db/ops/modifier_pull_all.cpp index eb03c1bc314..f330e91b5e2 100644 --- a/src/mongo/db/ops/modifier_pull_all.cpp +++ b/src/mongo/db/ops/modifier_pull_all.cpp @@ -225,25 +225,23 @@ namespace mongo { Status ModifierPullAll::log(LogBuilder* logBuilder) const { // log document mutablebson::Document& doc = logBuilder->getDocument(); - const bool pathExists = _preparedState->pathFoundElement.ok() && (_preparedState->pathFoundIndex == (_fieldRef.numParts() - 1)); + if (!pathExists) + return logBuilder->addToUnsets(_fieldRef.dottedField()); + // value for the logElement ("field.path.name": <value>) - mutablebson::Element logElement = pathExists ? - doc.makeElementWithNewFieldName( - _fieldRef.dottedField(), - _preparedState->pathFoundElement): - doc.makeElementBool(_fieldRef.dottedField(), true); + mutablebson::Element logElement = doc.makeElementWithNewFieldName( + _fieldRef.dottedField(), + _preparedState->pathFoundElement); if (!logElement.ok()) { - return Status(ErrorCodes::InternalError, "cannot create details"); + return Status(ErrorCodes::InternalError, + str::stream() << "Could not append entry to $pullAll oplog entry: " + << "set '" << _fieldRef.dottedField() << "' -> " + << _preparedState->pathFoundElement.toString() ); } - - // Now, we attach the {<fieldname>: <value>} Element under the {$op: ...} one. - return pathExists ? - logBuilder->addToSets(logElement) : - logBuilder->addToUnsets(logElement); + return logBuilder->addToSets(logElement); } - } // namespace mongo |