summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/expression.cpp')
-rw-r--r--src/mongo/db/pipeline/expression.cpp13
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);
}