summaryrefslogtreecommitdiff
path: root/src/mongo/db/update/unset_node.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/update/unset_node.h')
-rw-r--r--src/mongo/db/update/unset_node.h22
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