-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: LINQ3
-
None
A simple implementation of some of the `GroupBy` overloads requires holding all documents from each group in a single intermediate document, which requires more memory than necessary (and might even exceed the maximum size of a document that can pass from one pipeline stage to the next). Often these pipelines can be rewritten to move the accumulators back to the original `$group` stage. This will most likely be best implemented as a post-processing step of the AST representation of the pipeline (i.e. the already translated LINQ query).
- depends on
-
CSHARP-3778 LINQ3: Implement AstNodeVisitor
- Closed
-
CSHARP-3782 LINQ3: Implement AstNodeReplacer
- Closed
-
CSHARP-3829 LINQ3: Rename AstVar to AstVarBinding
- Closed
-
CSHARP-3830 LINQ3: Split AstFieldExpression into AstVarExpression and AstGetFieldExpression
- Closed
-
CSHARP-3832 LINQ3: Refactor SymbolTable
- Closed
-
CSHARP-3833 LINQ3: Refactor TranslationContext to add methods to create symbols
- Closed
-
CSHARP-3834 LINQ3: Add First and Last operators to AstUnaryExpression
- Closed
-
CSHARP-3835 LINQ3: Change type of As property of AstMapExpression from string to AstVarExpression
- Closed
-
CSHARP-3836 LINQ3: Add the virtual CanBeRenderedAsPath method to AstExpression
- Closed
- is depended on by
-
CSHARP-3590 LINQ3: Implement AstPipelineOptimizer
- Closed
- related to
-
CSHARP-3327 LINQ3: Translate GroupBy to $group stage
- Closed