summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp
diff options
context:
space:
mode:
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.cpp22
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();
}