diff options
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.cpp | 12 |
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(); } |