- Reference >
- Operators >
- Aggregation Pipeline Operators >
- $split (aggregation)
$split (aggregation)¶
On this page
New in version 3.4.
Definition¶
-
$split
¶ 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.$split
has the following operator expression syntax:Field Type Description string expression
string The string to be split. string expression
can be any valid expression as long as it resolves to a string. For more information on expressions, see Expressions.delimiter
string The delimiter to use when splitting the string expression. delimiter
can be any valid expression as long as it resolves to a string.
Behavior¶
The $split
operator returns an array.
The <string expression>
and <delimiter>
inputs must both be
strings. Otherwise, the operation fails with an error.
Example | Results |
---|---|
{ $split: [ "headphone jack", 7 ] } |
Errors with message:
|
{ $split: [ "headphone jack", /jack/ ] } |
Errors with message:
|
Example¶
A collection named deliveries
contains the following documents:
The goal of following aggregation operation is to find the total quantity of deliveries for each state and sort the list in descending order. It has five pipeline stages:
- The
$project
stage produces documents with two fields,qty
(integer) andcity_state
(array). The$split
operator creates an array of strings by splitting thecity
field, using a space (" "
) as a delimiter. - The
$unwind
stage creates a separate record for each element in thecity_state
field. - The
$match
stage uses a regular expression to filter out the city documents, leaving only those containing a state. - The
$group
stage groups all the states together and sums theqty
field. - The
$sort
stage sorts the results bytotal_qty
in descending order.
The operation returns the following results: