Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$split (operador de expresión)

$split

Divide una cadena en un arreglo de subcadenas según un delimitador, que puede ser una string o un patrón regex. $split elimina 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 de operador:

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

string expression

string

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

delimiter

string

El delimitador a utilizar al dividir la expresión del string. delimiter puede ser cualquier expresión válida, siempre que se resuelva en un string o un patrón de expresión regular.

La $split el operador devuelve un arreglo. La <string expression> input debe ser una string y la <delimiter> input debe ser una string o un patrón regex. 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", /jack/ ] }
[ "headphone ", "" ]
{ $split: [ "f74a--43b6-bd68--55e3", /(-+)/ ] }
["f74a", "--", "43b6", "-", "bd68", "--", "55e3"]
{ $split: [ "headphone jack", 7 ] }

Errores con mensaje:

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

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 encontrar la cantidad total de entregas por estado y ordenar la lista en orden descendente. Tiene cinco etapas de pipeline:

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

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

  • 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