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