summaryrefslogtreecommitdiff
path: root/src/mongo/db/ops/modifier_pull_all.cpp
diff options
context:
space:
mode:
authorScott Hernandez <scotthernandez@gmail.com>2013-12-11 11:00:32 -0500
committerScott Hernandez <scotthernandez@gmail.com>2013-12-13 15:51:49 -0500
commit34738d8f39dae85b10687b207473e61b52b5b93c (patch)
treeef13e89af32eb2696824b19b7b7ca8d23ad9eb76 /src/mongo/db/ops/modifier_pull_all.cpp
parent2c54682ce88e2c4e7fe8c99baeadfece0831dbd2 (diff)
downloadmongo-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.cpp24
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