summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp')
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
index d28ad725d00..d3e57b11bb2 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
@@ -64,8 +64,18 @@ void InternalSchemaEqMatchExpression::debugString(StringBuilder& debug,
BSONObj InternalSchemaEqMatchExpression::getSerializedRightHandSide(
SerializationOptions opts) const {
- // TODO SERVER-73678 respect 'replacementForLiteralArgs.'
BSONObjBuilder eqObj;
+ if (opts.redactFieldNames || opts.replacementForLiteralArgs) {
+ if (_rhsElem.isABSONObj()) {
+ BSONObjBuilder exprSpec(eqObj.subobjStart(kName));
+ opts.redactObjToBuilder(&exprSpec, _rhsElem.Obj());
+ exprSpec.done();
+ return eqObj.obj();
+ } else if (opts.replacementForLiteralArgs) {
+ // If the element is not an object it must be a literal.
+ return BSON(kName << opts.replacementForLiteralArgs.get());
+ }
+ }
eqObj.appendAs(_rhsElem, kName);
return eqObj.obj();
}