@@ -168,6 +168,7 @@ import {
168168 collectionId ,
169169 type as pipelineType ,
170170 currentTimestamp ,
171+ variable ,
171172 // array
172173 array ,
173174 arrayFilter ,
@@ -1311,10 +1312,12 @@ void currentTimestamp();
13111312// array
13121313void array ( [ 1 , 2 , 3 ] ) ;
13131314void array ( [ field ( 'a' ) , constant ( 2 ) ] ) ;
1315+ // variable: (string) => Expression
1316+ void variable ( 'score' ) ;
13141317// arrayFilter: (string, alias, BooleanExpression) | (Expression, alias, BooleanExpression)
1315- void arrayFilter ( 'scores' , 'score' , greaterThan ( constant ( 1 ) , constant ( 0 ) ) ) ;
1316- void arrayFilter ( field ( 'scores' ) , 'score' , greaterThan ( constant ( 1 ) , constant ( 0 ) ) ) ;
1317- void field ( 'scores' ) . arrayFilter ( 'score' , greaterThan ( constant ( 1 ) , constant ( 0 ) ) ) ;
1318+ void arrayFilter ( 'scores' , 'score' , greaterThan ( variable ( 'score' ) , constant ( 15 ) ) ) ;
1319+ void arrayFilter ( field ( 'scores' ) , 'score' , greaterThan ( variable ( 'score' ) , constant ( 15 ) ) ) ;
1320+ void field ( 'scores' ) . arrayFilter ( 'score' , greaterThan ( variable ( 'score' ) , constant ( 15 ) ) ) ;
13181321// arrayConcat: (Expression, ...) | (string, ...)
13191322void arrayConcat ( field ( 'tags' ) , field ( 'moreTags' ) ) ;
13201323void arrayConcat ( field ( 'tags' ) , [ 'extra' ] ) ;
@@ -1694,8 +1697,12 @@ const pipelineArrayOps = xDb
16941697 arrayGet ( 'items' , 0 ) . as ( 'firstItem2' ) ,
16951698 arrayConcat ( field ( 'primaryTags' ) , field ( 'secondaryTags' ) ) . as ( 'allTags' ) ,
16961699 arrayConcat ( 'primaryTags' , [ 'extra' ] ) . as ( 'allTags2' ) ,
1697- arrayFilter ( 'scores' , 'score' , greaterThan ( constant ( 1 ) , constant ( 0 ) ) ) . as ( 'passingScores' ) ,
1698- field ( 'scores' ) . arrayFilter ( 'score' , greaterThan ( constant ( 2 ) , constant ( 1 ) ) ) . as ( 'topScores' ) ,
1700+ arrayFilter ( 'scores' , 'score' , greaterThan ( variable ( 'score' ) , constant ( 15 ) ) ) . as (
1701+ 'passingScores' ,
1702+ ) ,
1703+ field ( 'scores' ) . arrayFilter ( 'score' , greaterThan ( variable ( 'score' ) , constant ( 20 ) ) ) . as (
1704+ 'topScores' ,
1705+ ) ,
16991706 arraySum ( field ( 'scores' ) ) . as ( 'totalScore' ) ,
17001707 arraySum ( 'scores' ) . as ( 'totalScore2' ) ,
17011708 ) ;
0 commit comments