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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *