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: как удалить поле