# Expr

class
**Expr** (View source)

Fluent interface for adding operators to aggregation stages.

## Methods

No description

Adds numbers together or adds numbers and a date. If one of the arguments is a date, $add treats the other arguments as milliseconds to add to the date.

Evaluates an array as a set and returns true if no element in the array is false. Otherwise, returns false. An empty array returns true.

Evaluates an array as a set and returns true if any of the elements are true and false otherwise. An empty array returns false.

^{deprecated}

Adds a case statement for a branch of the $switch operator.

Concatenates strings and returns the concatenated string.

Concatenates arrays to return the concatenated array.

Converts an expression object into an array, recursing into nested items

^{deprecated}

Ensures an array or operator expression is converted to an array.

Converts a date object to a string according to a user-specified format.

Returns the day of the month for a date as a number between 1 and 31.

^{deprecated}

Adds a default statement for the current $switch operator.

Set the current field for building the expression.

No description

Evaluates an expression and returns the value of the expression if the expression evaluates to a non-null value. If the expression evaluates to a null value, including instances of undefined values or missing fields, returns the value of the replacement expression.

Searches an array for an occurence of a specified value and returns the array index (zero-based) of the first occurence. If the value is not found, returns -1.

Searches a string for an occurence of a substring and returns the UTF-8 byte index (zero-based) of the first occurence. If the substring is not found, returns -1.

Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).

Returns the metadata associated with a document in a pipeline operations.

Returns the millisecond portion of a date as an integer between 0 and 999.

Multiplies numbers together and returns the result.

Accepts an array expression as an argument and returns an array with the elements in reverse order.

Takes two sets and returns an array containing the elements that only exist in the first set.

Compares two or more arrays and returns true if they have the same distinct elements and false otherwise.

Takes two or more arrays and returns an array that contains the elements that appear in every input array.

Takes two arrays and returns true when the first array is a subset of the second, including when the first array equals the second array, and false otherwise.

Takes two or more arrays and returns an array containing the elements that appear in any input array.

Calculates the population standard deviation of the input values.

Calculates the sample standard deviation of the input values.

Performs case-insensitive comparison of two strings. Returns 1 if first string is “greater than” the second string.

Returns the substring of a string.

^{deprecated}

Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.

^{deprecated}

Adds a case statement for the current branch of the $switch operator.

## Details

###
at line 42
```
$this
```**__call**(string $method, array $args)

**__call**(string $method, array $args)

###
at line 64
```
$this
```**abs**(mixed|Expr $number)

**abs**(mixed|Expr $number)

Returns the absolute value of a number.

The

###
at line 83
```
$this
```**add**($expression1, $expression2)

**add**($expression1, $expression2)

Adds numbers together or adds numbers and a date. If one of the arguments is a date, $add treats the other arguments as milliseconds to add to the date.

The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date.

###
at line 95
```
$this
```**addAnd**(array|Expr $expression)

**addAnd**(array|Expr $expression)

Adds one or more $and clauses to the current expression.

###
at line 113
```
$this
```**addOr**(array|Expr $expression)

**addOr**(array|Expr $expression)

Adds one or more $or clause to the current expression.

###
at line 135
```
$this
```**addToSet**(mixed|Expr $expression)

**addToSet**(mixed|Expr $expression)

Returns an array of all unique values that results from applying an expression to each document in a group of documents that share the same group by key. Order of the elements in the output array is unspecified.

AddToSet is an accumulator operation only available in the group stage.

###
at line 150
```
$this
```**allElementsTrue**(mixed|Expr $expression)

**allElementsTrue**(mixed|Expr $expression)

Evaluates an array as a set and returns true if no element in the array is false. Otherwise, returns false. An empty array returns true.

The expression must resolve to an array.

###
at line 165
```
$this
```**anyElementTrue**(array|Expr $expression)

**anyElementTrue**(array|Expr $expression)

Evaluates an array as a set and returns true if any of the elements are true and false otherwise. An empty array returns false.

The expression must resolve to an array.

###
at line 185
```
$this
```**arrayElemAt**(mixed|Expr $array, mixed|Expr $index)

**arrayElemAt**(mixed|Expr $array, mixed|Expr $index)

Returns the element at the specified array index.

The

###
at line 199
```
$this
```**avg**(mixed|Expr $expression)

**avg**(mixed|Expr $expression)

Returns the average value of the numeric values that result from applying a specified expression to each document in a group of documents that share the same group by key. Ignores nun-numeric values.

###
at line 217
```
protected $this
```**caseInternal**(mixed|Expr $expression)
^{deprecated}

**caseInternal**(mixed|Expr $expression)

^{deprecated}

^{deprecated}
Method
will be renamed to "case" in next major version

Adds a case statement for a branch of the $switch operator.

Requires {@link switch()} to be called first. The argument can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value.

###
at line 238
```
$this
```**ceil**(mixed|Expr $number)

**ceil**(mixed|Expr $number)

Returns the smallest integer greater than or equal to the specified number.

The

###
at line 254
```
$this
```**cmp**(mixed|Expr $expression1, mixed|Expr $expression2)

**cmp**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: -1 if the first value is less than the second.

1 if the first value is greater than the second. 0 if the two values are equivalent.

###
at line 272
```
$this
```**concat**($expression1, $expression2)

**concat**($expression1, $expression2)

Concatenates strings and returns the concatenated string.

The arguments can be any valid expression as long as they resolve to strings. If the argument resolves to a value of null or refers to a field that is missing, $concat returns null.

###
at line 291
```
$this
```**concatArrays**($array1, $array2)

**concatArrays**($array1, $array2)

Concatenates arrays to return the concatenated array.

The

###
at line 308
```
$this
```**cond**(mixed|Expr $if, mixed|Expr $then, mixed|Expr $else)

**cond**(mixed|Expr $if, mixed|Expr $then, mixed|Expr $else)

Evaluates a boolean expression to return one of the two specified return expressions.

The arguments can be any valid expression.

###
at line 324
```
static string|array
```**convertExpression**(mixed|Expr $expression)

**convertExpression**(mixed|Expr $expression)

Converts an expression object into an array, recursing into nested items

For expression objects, it calls getExpression on the expression object. For arrays, it recursively calls itself for each array item. Other values are returned directly.

###
at line 343
```
protected mixed
```**ensureArray**(mixed|Expr $expression)
^{deprecated}

**ensureArray**(mixed|Expr $expression)

^{deprecated}

^{deprecated}
Deprecated
in favor of convertExpression

Ensures an array or operator expression is converted to an array.

###
at line 366
```
$this
```**dateToString**(string $format, mixed|Expr $expression)

**dateToString**(string $format, mixed|Expr $expression)

Converts a date object to a string according to a user-specified format.

The format string can be any string literal, containing 0 or more format specifiers. The date argument can be any expression as long as it resolves to a date.

###
at line 380
```
$this
```**dayOfMonth**(mixed|Expr $expression)

**dayOfMonth**(mixed|Expr $expression)

Returns the day of the month for a date as a number between 1 and 31.

The argument can be any expression as long as it resolves to a date.

###
at line 395
```
$this
```**dayOfWeek**(mixed|Expr $expression)

**dayOfWeek**(mixed|Expr $expression)

Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday).

The argument can be any expression as long as it resolves to a date.

###
at line 409
```
$this
```**dayOfYear**(mixed|Expr $expression)

**dayOfYear**(mixed|Expr $expression)

Returns the day of the year for a date as a number between 1 and 366.

The argument can be any expression as long as it resolves to a date.

###
at line 429
```
protected $this
```**defaultInternal**(mixed|Expr $expression)
^{deprecated}

**defaultInternal**(mixed|Expr $expression)

^{deprecated}

^{deprecated}
Method
will be renamed to "default" in next major version

Adds a default statement for the current $switch operator.

Requires {@link switch()} to be called first. The argument can be any valid expression.

Note: if no default is specified and no branch evaluates to true, the $switch operator throws an error.

###
at line 453
```
$this
```**divide**(mixed|Expr $expression1, mixed|Expr $expression2)

**divide**(mixed|Expr $expression1, mixed|Expr $expression2)

Divides one number by another and returns the result. The first argument is divided by the second argument.

The arguments can be any valid expression as long as the resolve to numbers.

###
at line 466
```
$this
```**eq**(mixed|Expr $expression1, mixed|Expr $expression2)

**eq**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns whether the are equivalent.

###
at line 483
```
$this
```**exp**(mixed|Expr $exponent)

**exp**(mixed|Expr $exponent)

Raises Euler’s number to the specified exponent and returns the result.

The

###
at line 521
```
$this
```**field**(string $fieldName)

**field**(string $fieldName)

Set the current field for building the expression.

###
at line 542
```
$this
```**filter**(mixed|Expr $input, mixed|Expr $as, mixed|Expr $cond)

**filter**(mixed|Expr $input, mixed|Expr $as, mixed|Expr $cond)

Selects a subset of the array to return based on the specified condition.

Returns an array with only those elements that match the condition. The returned elements are in the original order.

###
at line 556
```
$this
```**first**(mixed|Expr $expression)

**first**(mixed|Expr $expression)

Returns the value that results from applying an expression to the first document in a group of documents that share the same group by key. Only meaningful when documents are in a defined order.

###
at line 573
```
$this
```**floor**(mixed|Expr $number)

**floor**(mixed|Expr $number)

Returns the largest integer less than or equal to the specified number.

The

###
at line 581
```
array
```**getExpression**()

**getExpression**()

###
at line 597
```
$this
```**gt**(mixed|Expr $expression1, mixed|Expr $expression2)

**gt**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: true when the first value is greater than the second value.

false when the first value is less than or equivalent to the second value.

###
at line 613
```
$this
```**gte**(mixed|Expr $expression1, mixed|Expr $expression2)

**gte**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: true when the first value is greater than or equivalent to the second value.

false when the first value is less than the second value.

###
at line 627
```
$this
```**hour**(mixed|Expr $expression)

**hour**(mixed|Expr $expression)

Returns the hour portion of a date as a number between 0 and 23.

The argument can be any expression as long as it resolves to a date.

###
at line 645
```
$this
```**ifNull**(mixed|Expr $expression, mixed|Expr $replacementExpression)

**ifNull**(mixed|Expr $expression, mixed|Expr $replacementExpression)

Evaluates an expression and returns the value of the expression if the expression evaluates to a non-null value. If the expression evaluates to a null value, including instances of undefined values or missing fields, returns the value of the replacement expression.

The arguments can be any valid expression.

###
at line 662
```
$this
```**in**(mixed|Expr $expression, mixed|Expr $arrayExpression)

**in**(mixed|Expr $expression, mixed|Expr $arrayExpression)

Returns a boolean indicating whether a specified value is in an array.

Unlike the $in query operator, the aggregation $in operator does not support matching by regular expressions.

###
at line 680
```
$this
```**indexOfArray**(mixed|Expr $arrayExpression, mixed|Expr $searchExpression, mixed|Expr $start = null, mixed|Expr $end = null)

**indexOfArray**(mixed|Expr $arrayExpression, mixed|Expr $searchExpression, mixed|Expr $start = null, mixed|Expr $end = null)

Searches an array for an occurence of a specified value and returns the array index (zero-based) of the first occurence. If the value is not found, returns -1.

###
at line 708
```
$this
```**indexOfBytes**(mixed|Expr $stringExpression, mixed|Expr $substringExpression, int|null $start = null, int|null $end = null)

**indexOfBytes**(mixed|Expr $stringExpression, mixed|Expr $substringExpression, int|null $start = null, int|null $end = null)

Searches a string for an occurence of a substring and returns the UTF-8 byte index (zero-based) of the first occurence. If the substring is not found, returns -1.

###
at line 736
```
$this
```**indexOfCP**(mixed|Expr $stringExpression, mixed|Expr $substringExpression, int|null $start = null, int|null $end = null)

**indexOfCP**(mixed|Expr $stringExpression, mixed|Expr $substringExpression, int|null $start = null, int|null $end = null)

Searches a string for an occurence of a substring and returns the UTF-8 code point index (zero-based) of the first occurence. If the substring is not found, returns -1.

###
at line 761
```
$this
```**isArray**(mixed|Expr $expression)

**isArray**(mixed|Expr $expression)

Determines if the operand is an array. Returns a boolean.

The

###
at line 777
```
$this
```**isoDayOfWeek**(mixed|Expr $expression)

**isoDayOfWeek**(mixed|Expr $expression)

Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).

The argument can be any expression as long as it resolves to a date.

###
at line 795
```
$this
```**isoWeek**(mixed|Expr $expression)

**isoWeek**(mixed|Expr $expression)

Returns the week number in ISO 8601 format, ranging from 1 to 53.

Week numbers start at 1 with the week (Monday through Sunday) that contains the year’s first Thursday.

The argument can be any expression as long as it resolves to a date.

###
at line 813
```
$this
```**isoWeekYear**(mixed|Expr $expression)

**isoWeekYear**(mixed|Expr $expression)

Returns the year number in ISO 8601 format.

The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601).

The argument can be any expression as long as it resolves to a date.

###
at line 827
```
$this
```**last**(mixed|Expr $expression)

**last**(mixed|Expr $expression)

Returns the value that results from applying an expression to the last document in a group of documents that share the same group by a field.

Only meaningful when documents are in a defined order.

###
at line 841
```
$this
```**let**(mixed|Expr $vars, mixed|Expr $in)

**let**(mixed|Expr $vars, mixed|Expr $in)

Binds variables for use in the specified expression, and returns the result of the expression.

###
at line 854
```
$this
```**literal**(mixed|Expr $value)

**literal**(mixed|Expr $value)

Returns a value without parsing. Use for values that the aggregation pipeline may interpret as an expression.

###
at line 872
```
$this
```**ln**(mixed|Expr $number)

**ln**(mixed|Expr $number)

Calculates the natural logarithm ln (i.e loge) of a number and returns the result as a double.

The

###
at line 893
```
$this
```**log**(mixed|Expr $number, mixed|Expr $base)

**log**(mixed|Expr $number, mixed|Expr $base)

Calculates the log of a number in the specified base and returns the result as a double.

The

###
at line 910
```
$this
```**log10**(mixed|Expr $number)

**log10**(mixed|Expr $number)

Calculates the log base 10 of a number and returns the result as a double.

The

###
at line 926
```
$this
```**lt**(mixed|Expr $expression1, mixed|Expr $expression2)

**lt**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: true when the first value is less than the second value.

false when the first value is greater than or equivalent to the second value.

###
at line 941
```
$this
```**lte**(mixed|Expr $expression1, mixed|Expr $expression2)

**lte**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: true when the first value is less than or equivalent to the second value.

false when the first value is greater than the second value.

###
at line 956
```
$this
```**map**(mixed|Expr $input, string $as, mixed|Expr $in)

**map**(mixed|Expr $input, string $as, mixed|Expr $in)

Applies an expression to each item in an array and returns an array with the applied results.

###
at line 969
```
$this
```**max**(mixed|Expr $expression)

**max**(mixed|Expr $expression)

Returns the highest value that results from applying an expression to each document in a group of documents that share the same group by key.

###
at line 981
```
$this
```**meta**($metaDataKeyword)

**meta**($metaDataKeyword)

Returns the metadata associated with a document in a pipeline operations.

###
at line 995
```
$this
```**millisecond**(mixed|Expr $expression)

**millisecond**(mixed|Expr $expression)

Returns the millisecond portion of a date as an integer between 0 and 999.

The argument can be any expression as long as it resolves to a date.

###
at line 1008
```
$this
```**min**(mixed|Expr $expression)

**min**(mixed|Expr $expression)

Returns the lowest value that results from applying an expression to each document in a group of documents that share the same group by key.

###
at line 1022
```
$this
```**minute**(mixed|Expr $expression)

**minute**(mixed|Expr $expression)

Returns the minute portion of a date as a number between 0 and 59.

The argument can be any expression as long as it resolves to a date.

###
at line 1038
```
$this
```**mod**(mixed|Expr $expression1, mixed|Expr $expression2)

**mod**(mixed|Expr $expression1, mixed|Expr $expression2)

Divides one number by another and returns the remainder. The first argument is divided by the second argument.

The arguments can be any valid expression as long as they resolve to numbers.

###
at line 1052
```
$this
```**month**(mixed|Expr $expression)

**month**(mixed|Expr $expression)

Returns the month of a date as a number between 1 and 12.

The argument can be any expression as long as it resolves to a date.

###
at line 1068
```
$this
```**multiply**($expression1, $expression2)

**multiply**($expression1, $expression2)

Multiplies numbers together and returns the result.

The arguments can be any valid expression as long as they resolve to numbers.

###
at line 1083
```
$this
```**ne**(mixed|Expr $expression1, mixed|Expr $expression2)

**ne**(mixed|Expr $expression1, mixed|Expr $expression2)

Compares two values and returns: true when the values are not equivalent.

false when the values are equivalent.

###
at line 1095
```
$this
```**not**(mixed|Expr $expression)

**not**(mixed|Expr $expression)

Evaluates a boolean and returns the opposite boolean value.

###
at line 1136
```
$this
```**pow**(mixed|Expr $number, mixed|Expr $exponent)

**pow**(mixed|Expr $number, mixed|Expr $exponent)

Raises a number to the specified exponent and returns the result.

The

###
at line 1149
```
$this
```**push**(mixed|Expr $expression)

**push**(mixed|Expr $expression)

Returns an array of all values that result from applying an expression to each document in a group of documents that share the same group by key.

###
at line 1166
```
$this
```**range**(mixed|Expr $start, mixed|Expr $end, mixed|Expr $step = 1)

**range**(mixed|Expr $start, mixed|Expr $end, mixed|Expr $step = 1)

Returns an array whose elements are a generated sequence of numbers.

$range generates the sequence from the specified starting number by successively incrementing the starting number by the specified step value up to but not including the end point.

###
at line 1214
```
$this
```**reduce**(mixed|Expr $input, mixed|Expr $initialValue, mixed|Expr $in)

**reduce**(mixed|Expr $input, mixed|Expr $initialValue, mixed|Expr $in)

Applies an expression to each element in an array and combines them into a single value.

###
at line 1228
```
$this
```**reverseArray**(mixed|Expr $expression)

**reverseArray**(mixed|Expr $expression)

Accepts an array expression as an argument and returns an array with the elements in reverse order.

###
at line 1243
```
$this
```**second**(mixed|Expr $expression)

**second**(mixed|Expr $expression)

Returns the second portion of a date as a number between 0 and 59, but can be 60 to account for leap seconds.

The argument can be any expression as long as it resolves to a date.

###
at line 1259
```
$this
```**setDifference**(mixed|Expr $expression1, mixed|Expr $expression2)

**setDifference**(mixed|Expr $expression1, mixed|Expr $expression2)

Takes two sets and returns an array containing the elements that only exist in the first set.

The arguments can be any valid expression as long as they each resolve to an array.

###
at line 1276
```
$this
```**setEquals**($expression1, $expression2)

**setEquals**($expression1, $expression2)

Compares two or more arrays and returns true if they have the same distinct elements and false otherwise.

The arguments can be any valid expression as long as they each resolve to an array.

###
at line 1293
```
$this
```**setIntersection**($expression1, $expression2)

**setIntersection**($expression1, $expression2)

Takes two or more arrays and returns an array that contains the elements that appear in every input array.

The arguments can be any valid expression as long as they each resolve to an array.

###
at line 1309
```
$this
```**setIsSubset**(mixed|Expr $expression1, mixed|Expr $expression2)

**setIsSubset**(mixed|Expr $expression1, mixed|Expr $expression2)

Takes two arrays and returns true when the first array is a subset of the second, including when the first array equals the second array, and false otherwise.

The arguments can be any valid expression as long as they each resolve to an array.

###
at line 1326
```
$this
```**setUnion**($expression1, $expression2)

**setUnion**($expression1, $expression2)

Takes two or more arrays and returns an array containing the elements that appear in any input array.

The arguments can be any valid expression as long as they each resolve to an array.

###
at line 1340
```
$this
```**size**(mixed|Expr $expression)

**size**(mixed|Expr $expression)

Counts and returns the total the number of items in an array.

The argument can be any expression as long as it resolves to an array.

###
at line 1356
```
$this
```**slice**(mixed|Expr $array, mixed|Expr $n, mixed|Expr|null $position = null)

**slice**(mixed|Expr $array, mixed|Expr $n, mixed|Expr|null $position = null)

Returns a subset of an array.

###
at line 1379
```
$this
```**split**(mixed|Expr $string, mixed|Expr $delimiter)

**split**(mixed|Expr $string, mixed|Expr $delimiter)

Divides a string into an array of substrings based on a delimiter.

$split removes the delimiter and returns the resulting substrings as elements of an array. If the delimiter is not found in the string, $split returns the original string as the only element of an array.

###
at line 1395
```
$this
```**sqrt**(mixed|Expr $expression)

**sqrt**(mixed|Expr $expression)

Calculates the square root of a positive number and returns the result as a double.

The argument can be any valid expression as long as it resolves to a non-negative number.

###
at line 1412
```
$this
```**stdDevPop**($expression1)

**stdDevPop**($expression1)

Calculates the population standard deviation of the input values.

The arguments can be any expression as long as it resolves to an array.

###
at line 1431
```
$this
```**stdDevSamp**($expression1)

**stdDevSamp**($expression1)

Calculates the sample standard deviation of the input values.

The arguments can be any expression as long as it resolves to an array.

###
at line 1451
```
$this
```**strcasecmp**(mixed|Expr $expression1, mixed|Expr $expression2)

**strcasecmp**(mixed|Expr $expression1, mixed|Expr $expression2)

Performs case-insensitive comparison of two strings. Returns 1 if first string is “greater than” the second string.

0 if the two strings are equal. -1 if the first string is “less than” the second string.

The arguments can be any valid expression as long as they resolve to strings.

###
at line 1465
```
$this
```**strLenBytes**(mixed|Expr $string)

**strLenBytes**(mixed|Expr $string)

Returns the number of UTF-8 encoded bytes in the specified string.

###
at line 1479
```
$this
```**strLenCP**(mixed|Expr $string)

**strLenCP**(mixed|Expr $string)

Returns the number of UTF-8 code points in the specified string.

###
at line 1496
```
$this
```**substr**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $length)

**substr**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $length)

Returns a substring of a string, starting at a specified index position and including the specified number of characters. The index is zero-based.

The arguments can be any valid expression as long as long as the first argument resolves to a string, and the second and third arguments resolve to integers.

###
at line 1516
```
$this
```**substrBytes**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $count)

**substrBytes**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $count)

Returns the substring of a string.

The substring starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the number of bytes specified.

###
at line 1536
```
$this
```**substrCP**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $count)

**substrCP**(mixed|Expr $string, mixed|Expr $start, mixed|Expr $count)

Returns the substring of a string.

The substring starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string for the number of code points specified.

###
at line 1552
```
$this
```**subtract**(mixed|Expr $expression1, mixed|Expr $expression2)

**subtract**(mixed|Expr $expression1, mixed|Expr $expression2)

Subtracts two numbers to return the difference. The second argument is subtracted from the first argument.

The arguments can be any valid expression as long as they resolve to numbers and/or dates.

###
at line 1566
```
$this
```**sum**(mixed|Expr $expression)

**sum**(mixed|Expr $expression)

Calculates and returns the sum of all the numeric values that result from applying a specified expression to each document in a group of documents that share the same group by key. Ignores nun-numeric values.

###
at line 1583
```
protected $this
```**switchInternal**()
^{deprecated}

**switchInternal**()

^{deprecated}

^{deprecated}
Method
will be renamed to "switch" in next major version

Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.

To add statements, use the {@link case()}, {@link then()} and {@link default()} methods.

###
at line 1602
```
protected $this
```**thenInternal**(mixed|Expr $expression)
^{deprecated}

**thenInternal**(mixed|Expr $expression)

^{deprecated}

^{deprecated}
Method
will be renamed to "then" in next major version

Adds a case statement for the current branch of the $switch operator.

Requires {@link case()} to be called first. The argument can be any valid expression.

###
at line 1630
```
$this
```**toLower**(mixed|Expr $expression)

**toLower**(mixed|Expr $expression)

Converts a string to lowercase, returning the result.

The argument can be any expression as long as it resolves to a string.

###
at line 1644
```
$this
```**toUpper**(mixed|Expr $expression)

**toUpper**(mixed|Expr $expression)

Converts a string to uppercase, returning the result.

The argument can be any expression as long as it resolves to a string.

###
at line 1661
```
$this
```**trunc**(mixed|Expr $number)

**trunc**(mixed|Expr $number)

Truncates a number to its integer.

The

###
at line 1677
```
$this
```**type**(mixed|Expr $expression)

**type**(mixed|Expr $expression)

Returns a string that specifies the BSON type of the argument.

The argument can be any valid expression.

###
at line 1691
```
$this
```**week**(mixed|Expr $expression)

**week**(mixed|Expr $expression)

Returns the week of the year for a date as a number between 0 and 53.

The argument can be any expression as long as it resolves to a date.

###
at line 1705
```
$this
```**year**(mixed|Expr $expression)

**year**(mixed|Expr $expression)

Returns the year portion of a date.

The argument can be any expression as long as it resolves to a date.

###
at line 1722
```
$this
```**zip**(mixed|Expr $inputs, bool|null $useLongestLength = null, mixed|Expr|null $defaults = null)

**zip**(mixed|Expr $inputs, bool|null $useLongestLength = null, mixed|Expr|null $defaults = null)

Transposes an array of input arrays so that the first element of the output array would be an array containing, the first element of the first input array, the first element of the second input array, etc.