Вы можете использовать следующий синтаксис для разделения строки на массив подстрок в 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: как удалить поле