diff options
Diffstat (limited to 'src/mongo/db/pipeline/expression.cpp')
-rw-r--r-- | src/mongo/db/pipeline/expression.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mongo/db/pipeline/expression.cpp b/src/mongo/db/pipeline/expression.cpp index f008c6e7b4c..0db59301a5c 100644 --- a/src/mongo/db/pipeline/expression.cpp +++ b/src/mongo/db/pipeline/expression.cpp @@ -1972,8 +1972,12 @@ TimeUnit ExpressionDateDiff::convertToTimeUnit(const Value& value) { str::stream() << "$dateDiff requires 'unit' to be a string, but got " << typeName(value.getType()), BSONType::String == value.getType()); - return addContextToAssertionException([&] { return parseTimeUnit(value.getStringData()); }, - "$dateDiff parameter 'unit' value parsing failed"_sd); + auto valueAsString = value.getStringData(); + return addContextToAssertionException( + [&]() { + return parseTimeUnit(std::string_view{valueAsString.rawData(), valueAsString.size()}); + }, + "$dateDiff parameter 'unit' value parsing failed"_sd); } DayOfWeek ExpressionDateDiff::parseStartOfWeek(const Value& value) { @@ -1981,8 +1985,11 @@ DayOfWeek ExpressionDateDiff::parseStartOfWeek(const Value& value) { str::stream() << "$dateDiff requires 'startOfWeek' to be a string, but got " << typeName(value.getType()), BSONType::String == value.getType()); + auto valueAsString = value.getStringData(); return addContextToAssertionException( - [&] { return parseDayOfWeek(value.getStringData()); }, + [&]() { + return parseDayOfWeek(std::string_view{valueAsString.rawData(), valueAsString.size()}); + }, "$dateDiff parameter 'startOfWeek' value parsing failed"_sd); } |