diff options
Diffstat (limited to 'src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp')
| -rw-r--r-- | src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp index 5a6471e2155..64b34aafc3a 100644 --- a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp +++ b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp @@ -59,7 +59,7 @@ void InternalSchemaAllowedPropertiesMatchExpression::debugString(StringBuilder& _debugAddSpace(debug, indentationLevel); BSONObjBuilder builder; - serialize(&builder, {}); + serialize(&builder, true); debug << builder.obj().toString() << "\n"; const auto* tag = getTag(); @@ -128,29 +128,29 @@ bool InternalSchemaAllowedPropertiesMatchExpression::_matchesBSONObj(const BSONO } void InternalSchemaAllowedPropertiesMatchExpression::serialize(BSONObjBuilder* builder, - const SerializationOptions& opts, bool includePath) const { BSONObjBuilder expressionBuilder( builder->subobjStart(InternalSchemaAllowedPropertiesMatchExpression::kName)); std::vector<StringData> sortedProperties(_properties.begin(), _properties.end()); std::sort(sortedProperties.begin(), sortedProperties.end()); - opts.appendLiteral(&expressionBuilder, "properties", sortedProperties); - // This will be serialized to "i", which is the parser chosen namePlaceholder. Using this - // unmodified will have a similar effect to serializing to "?", however it preserves round trip - // parsing. + expressionBuilder.append("properties", sortedProperties); + expressionBuilder.append("namePlaceholder", _namePlaceholder); BSONArrayBuilder patternPropertiesBuilder(expressionBuilder.subarrayStart("patternProperties")); - for (auto&& [pattern, expression] : _patternProperties) { - patternPropertiesBuilder << BSON( - "regex" << opts.serializeLiteral(BSONRegEx(pattern.rawRegex)) << "expression" - << expression->getFilter()->serialize(opts, includePath)); + for (auto&& item : _patternProperties) { + BSONObjBuilder itemBuilder(patternPropertiesBuilder.subobjStart()); + itemBuilder.appendRegex("regex", item.first.rawRegex); + + BSONObjBuilder subexpressionBuilder(itemBuilder.subobjStart("expression")); + item.second->getFilter()->serialize(&subexpressionBuilder, includePath); + subexpressionBuilder.doneFast(); } patternPropertiesBuilder.doneFast(); BSONObjBuilder otherwiseBuilder(expressionBuilder.subobjStart("otherwise")); - _otherwise->getFilter()->serialize(&otherwiseBuilder, opts, includePath); + _otherwise->getFilter()->serialize(&otherwiseBuilder, includePath); otherwiseBuilder.doneFast(); expressionBuilder.doneFast(); } |
