diff options
Diffstat (limited to 'src/mongo/db/pipeline/document_path_support.cpp')
| -rw-r--r-- | src/mongo/db/pipeline/document_path_support.cpp | 11 |
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 |
