diff options
Diffstat (limited to 'src/mongo/db/update/unset_node.h')
-rw-r--r-- | src/mongo/db/update/unset_node.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mongo/db/update/unset_node.h b/src/mongo/db/update/unset_node.h index a8d19f9ade8..645497ef6a9 100644 --- a/src/mongo/db/update/unset_node.h +++ b/src/mongo/db/update/unset_node.h @@ -28,7 +28,7 @@ #pragma once -#include "mongo/db/update/update_leaf_node.h" +#include "mongo/db/update/modifier_node.h" #include "mongo/stdx/memory.h" namespace mongo { @@ -36,7 +36,7 @@ namespace mongo { /** * Represents the application of a $unset to the value at the end of a path. */ -class UnsetNode : public UpdateLeafNode { +class UnsetNode : public ModifierNode { public: Status init(BSONElement modExpr, const CollatorInterface* collator) final; @@ -46,7 +46,23 @@ public: void setCollator(const CollatorInterface* collator) final {} - ApplyResult apply(ApplyParams applyParams) const final; + ModifyResult updateExistingElement(mutablebson::Element* element, + std::shared_ptr<FieldRef> elementPath) const final; + + void validateUpdate(mutablebson::ConstElement updatedElement, + mutablebson::ConstElement leftSibling, + mutablebson::ConstElement rightSibling, + std::uint32_t recursionLevel, + ModifyResult modifyResult) const final; + + void logUpdate(LogBuilder* logBuilder, + StringData pathTaken, + mutablebson::Element element, + ModifyResult modifyResult) const final; + + bool allowNonViablePath() const final { + return true; + } }; } // namespace mongo |