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 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 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 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 El operador $split devuelve un arreglo. Las entradas <string expression> y <delimiter> deben ser ambas cadenas de texto. 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 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