summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/pipeline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/pipeline.cpp')
-rw-r--r--src/mongo/db/pipeline/pipeline.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/pipeline.cpp b/src/mongo/db/pipeline/pipeline.cpp
index ac861a0f6dd..535c05a4030 100644
--- a/src/mongo/db/pipeline/pipeline.cpp
+++ b/src/mongo/db/pipeline/pipeline.cpp
@@ -96,6 +96,11 @@ intrusive_ptr<Pipeline> Pipeline::parseCommand(string& errmsg,
continue;
}
+ // ignore writeConcern since it's handled externally
+ if (str::equals(pFieldName, "writeConcern")) {
+ continue;
+ }
+
/* look for the aggregation command */
if (!strcmp(pFieldName, commandName)) {
continue;
@@ -254,6 +259,21 @@ Status Pipeline::checkAuthForCommand(ClientBasic* client,
return Status(ErrorCodes::Unauthorized, "unauthorized");
}
+bool Pipeline::aggSupportsWriteConcern(const BSONObj& cmd) {
+ if (cmd.hasField("pipeline") == false) {
+ return false;
+ }
+
+ auto stages = cmd["pipeline"].Array();
+ for (auto stage : stages) {
+ if (stage.Obj().hasField("$out")) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
void Pipeline::detachFromOperationContext() {
pCtx->opCtx = nullptr;