summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMilitsa Sotirova <militsa.sotirova@mongodb.com>2022-09-14 18:00:53 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-09-14 20:26:03 +0000
commit7522eca50c6ce4792cd0ebc9a2a4bb65e3729642 (patch)
tree623b66f2b06eea1bef64c4a55ce81a30b0839cf7 /src
parentdd9d37fa07a7af46ac4ee8dabeb235dc9571afb0 (diff)
downloadmongo-7522eca50c6ce4792cd0ebc9a2a4bb65e3729642.tar.gz
SERVER-68692 add support for limit and skip queries in ABT translation
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/pipeline/abt/canonical_query_translation.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mongo/db/pipeline/abt/canonical_query_translation.cpp b/src/mongo/db/pipeline/abt/canonical_query_translation.cpp
index 066f060d81f..87c13355f37 100644
--- a/src/mongo/db/pipeline/abt/canonical_query_translation.cpp
+++ b/src/mongo/db/pipeline/abt/canonical_query_translation.cpp
@@ -59,8 +59,17 @@ ABT translateCanonicalQueryToABT(const Metadata& metadata,
translateProjection(ctx, scanProjName, canonicalQuery.getExpCtx(), proj);
}
- // TODO SERVER-68692: Support limit.
- // TODO SERVER-68693: Support skip.
+ auto skipAmount = canonicalQuery.getFindCommandRequest().getSkip();
+ auto limitAmount = canonicalQuery.getFindCommandRequest().getLimit();
+
+ if (limitAmount || skipAmount) {
+ ctx.setNode<LimitSkipNode>(
+ std::move(ctx.getNode()._rootProjection),
+ properties::LimitSkipRequirement(
+ limitAmount.value_or(properties::LimitSkipRequirement::kMaxVal),
+ skipAmount.value_or(0)),
+ std::move(ctx.getNode()._node));
+ }
return make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{
std::move(ctx.getNode()._rootProjection)}},