summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_path_support.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/document_path_support.cpp')
-rw-r--r--src/mongo/db/pipeline/document_path_support.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/mongo/db/pipeline/document_path_support.cpp b/src/mongo/db/pipeline/document_path_support.cpp
index eeb0831b55d..a57d0496a1d 100644
--- a/src/mongo/db/pipeline/document_path_support.cpp
+++ b/src/mongo/db/pipeline/document_path_support.cpp
@@ -136,18 +136,19 @@ StatusWith<Value> extractElementAlongNonArrayPath(const Document& doc, const Fie
return curValue;
}
-void documentToBsonWithPaths(const Document& input,
- const OrderedPathSet& paths,
- BSONObjBuilder* builder) {
+BSONObj documentToBsonWithPaths(const Document& input, const std::set<std::string>& paths) {
+ BSONObjBuilder outputBuilder;
for (auto&& path : paths) {
// getNestedField does not handle dotted paths correctly, so instead of retrieving the
// entire path, we just extract the first element of the path.
const auto prefix = FieldPath::extractFirstFieldFromDottedPath(path);
- if (!builder->hasField(prefix)) {
+ if (!outputBuilder.hasField(prefix)) {
// Avoid adding the same prefix twice.
- input.getField(prefix).addToBsonObj(builder, prefix);
+ input.getField(prefix).addToBsonObj(&outputBuilder, prefix);
}
}
+
+ return outputBuilder.obj();
}
} // namespace document_path_support