Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$split (operador de expresión)

$split

Divide una string en un arreglo de subcadenas según un delimitador. $split remueve el delimitador y devuelve las subcadenas resultantes como elementos de un arreglo. Si el delimitador no se encuentra en la string, $split devuelve la string original como el único elemento de un arreglo.

$split tiene lo siguiente Sintaxis de expresión del operador:

{ $split: [ <string expression>, <delimiter> ] }
Campo
Tipo
Descripción

string expression

string

La cadena que se va a dividir. string expression puede ser cualquier expresión válida siempre que se resuelva en una cadena. Para más información sobre expresiones, consulte Expresiones.

delimiter

string

El delimitador que se debe usar al dividir la expresión de string. delimiter puede ser cualquier expresión válida, siempre y cuando se resuelva en una string.

La $split El operador devuelve una matriz. Las <string expression> <delimiter> entradas y deben ser cadenas. De lo contrario, la operación falla con un error.

Ejemplo
Resultados
{ $split: [ "June-15-2013", "-" ] }
[ "June", "15", "2013" ]
{ $split: [ "banana split", "a" ] }
[ "b", "n", "n", " split" ]
{ $split: [ "Hello World", " " ] }
[ "Hello", "World" ]
{ $split: [ "astronomical", "astro" ] }
[ "", "nomical" ]
{ $split: [ "pea green boat", "owl" ] }
[ "pea green boat" ]

{ $split: [ "headphone jack", 7 ] }

Errores con mensaje:

"$split requires an expression that evaluates to a string as a second argument, found: double"

{ $split: [ "headphone jack", /jack/ ] }

Errores con mensaje:

"$split requires an expression that evaluates to a string as a second argument, found: regex"

Una colección llamada deliveries contiene los siguientes documentos:

db.deliveries.insertMany( [
{ _id: 1, city: "Berkeley, CA", qty: 648 },
{ _id: 2, city: "Bend, OR", qty: 491 },
{ _id: 3, city: "Kensington, CA", qty: 233 },
{ _id: 4, city: "Eugene, OR", qty: 842 },
{ _id: 5, city: "Reno, NV", qty: 655 },
{ _id: 6, city: "Portland, OR", qty: 408 },
{ _id: 7, city: "Sacramento, CA", qty: 574 }
] )

El objetivo de la siguiente operación de agregación es determinar la cantidad total de entregas de cada estado y ordenar la lista en orden descendente. Consta de cinco etapas:

  • La etapa genera documentos con dos $project campos: qty (entero) y city_state (matriz). El $split operador crea una matriz de cadenas dividiendo el city campo, utilizando una coma seguida de un espacio", " () como delimitador.

  • La etapa crea un registro separado para cada elemento en $unwind el city_state campo.

  • La etapa $match utiliza una expresión regular para filtrar los documentos de la ciudad, dejando solo aquellos que contienen un estado.

  • La etapa $group agrupa todos los estados juntos y suma el campo qty.

  • La etapa $sort ordena los resultados por total_qty en orden descendente.

db.deliveries.aggregate( [
{ $project: { city_state: { $split: ["$city", ", "] }, qty: 1 } },
{ $unwind: "$city_state" },
{ $match: { city_state: /[A-Z]{2}/ } },
{ $group: { _id: { state: "$city_state" }, total_qty: { $sum: "$qty" } } },
{ $sort: { total_qty: -1 } }
] )

La operación devuelve los siguientes resultados:

[
{ _id: { state: "OR" }, total_qty: 1741 },
{ _id: { state: "CA" }, total_qty: 1455 },
{ _id: { state: "NV" }, total_qty: 655 }
]

Volver

$sortArray

En esta página