MongoDB: как разбить строку на массив подстрок


Вы можете использовать следующий синтаксис для разделения строки на массив подстрок в MongoDB:

db.myCollection.aggregate([
 { $project : { split_field: { $split : [ " $field1", " " ] } } },
 { $merge : "myCollection" }
])

В этом конкретном примере строка в поле «field1» разбивается на основе пробелов в новое поле с названием «split_field» и добавляется новое поле в коллекцию с названием myCollection .

В следующем примере показано, как использовать этот синтаксис на практике с группами сбора со следующими документами:

db.teams.insertOne({name: " Dallas Mavs", points: 31})
db.teams.insertOne({name: " San Antonio Spurs", points: 22})
db.teams.insertOne({name: " Houston Rockets", points: 19})
db.teams.insertOne({name: " Boston Celtics", points: 26})
db.teams.insertOne({name: " Cleveland Cavs", points: 33})

Пример: разделить строку на массив подстрок в MongoDB

Мы можем использовать следующий код, чтобы разделить строку в столбце «имя» на массив строк и отобразить результаты в новом поле под названием «split_name» в коллекции команд :

db.teams.aggregate([
 { $project : { split_name: { $split : [ " $name", " " ] } } },
 { $merge : "teams" }
])

Вот как теперь выглядит обновленная коллекция:

{ _id: ObjectId("62014a924cb04b772fd7a938"),
 name: 'Dallas Mavs',
 points: 31,
 split_name: [ 'Dallas', 'Mavs' ] }
{ _id: ObjectId("62014a924cb04b772fd7a939"),
 name: 'San Antonio Spurs',
 points: 22,
 split_name: [ 'San', 'Antonio', 'Spurs' ] }
{ _id: ObjectId("62014a924cb04b772fd7a93a"),
 name: 'Houston Rockets',
 points: 19,
 split_name: [ 'Houston', 'Rockets' ] }
{ _id: ObjectId("62014a924cb04b772fd7a93b"),
 name: 'Boston Celtics',
 points: 26,
 split_name: [ 'Boston', 'Celtics' ] }
{ _id: ObjectId("62014a924cb04b772fd7a93c"),
 name: 'Cleveland Cavs',
 points: 33,
 split_name: [ 'Cleveland', 'Cavs' ] } 

Обратите внимание, что в каждом документе есть новое поле под названием «split_name», которое содержит массив подстрок из поля «имя».

Для этого конкретного примера мы решили отделить исходную строку, используя пустое пространство в качестве разделителя.

Если строка разделена другим разделителем (например, тире, косой чертой, двоеточием и т. д.), то просто используйте этот разделитель в функции $split .

Примечание.Полную документацию по функции $split можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как проверить, содержит ли поле строку
MongoDB: как добавить новое поле
MongoDB: как удалить поле

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.