summaryrefslogtreecommitdiff
path: root/src/mongo/s/commands/cluster_find_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/s/commands/cluster_find_cmd.cpp')
-rw-r--r--src/mongo/s/commands/cluster_find_cmd.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mongo/s/commands/cluster_find_cmd.cpp b/src/mongo/s/commands/cluster_find_cmd.cpp
index f879e3f1b96..a69d1e4a44f 100644
--- a/src/mongo/s/commands/cluster_find_cmd.cpp
+++ b/src/mongo/s/commands/cluster_find_cmd.cpp
@@ -119,7 +119,7 @@ public:
void explain(OperationContext* opCtx,
ExplainOptions::Verbosity verbosity,
- BSONObjBuilder* result) override {
+ rpc::ReplyBuilderInterface* result) override {
// Parse the command BSON to a QueryRequest.
bool isExplain = true;
auto qr =
@@ -150,15 +150,17 @@ public:
const char* mongosStageName =
ClusterExplain::getStageNameForReadOp(shardResponses.size(), _request.body);
+ auto bodyBuilder = result->getBodyBuilder();
uassertStatusOK(ClusterExplain::buildExplainResult(
opCtx,
ClusterExplain::downconvert(opCtx, shardResponses),
mongosStageName,
millisElapsed,
- result));
+ &bodyBuilder));
} catch (const ExceptionFor<ErrorCodes::CommandOnShardedViewNotSupportedOnMongod>& ex) {
- result->resetToEmpty();
+ auto bodyBuilder = result->getBodyBuilder();
+ bodyBuilder.resetToEmpty();
auto aggCmdOnView = uassertStatusOK(qr->asAggregationCommand());
@@ -173,7 +175,7 @@ public:
nsStruct.executionNss = std::move(ex->getNamespace());
uassertStatusOK(ClusterAggregate::runAggregate(
- opCtx, nsStruct, resolvedAggRequest, resolvedAggCmd, result));
+ opCtx, nsStruct, resolvedAggRequest, resolvedAggCmd, &bodyBuilder));
}
}
@@ -199,9 +201,11 @@ public:
std::vector<BSONObj> batch;
auto cursorId =
ClusterFind::runQuery(opCtx, *cq, ReadPreferenceSetting::get(opCtx), &batch);
- auto bodyBuilder = result->getBodyBuilder();
+
// Build the response document.
- CursorResponseBuilder firstBatch(/*firstBatch*/ true, &bodyBuilder);
+ CursorResponseBuilder::Options options;
+ options.isInitialResponse = true;
+ CursorResponseBuilder firstBatch(result, options);
for (const auto& obj : batch) {
firstBatch.append(obj);
}