Мне нужно изменить только строки, которые содержат «» в строке

#mongodb #mongodb-query

Вопрос:

Мне нужно изменить строку свойства. Мне просто нужно изменить те, на которых есть место.

Неверный Url: «url.com манекен/»

Хороший Url: «url.com/dummy/»

Фактический:

    {  
     test: "test1",  
     Attach: [{  
        Type: "img",  
        Url: "https://url.com dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com/dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com/dummy/"
     }] 
   }  
 

Ожидаемый:

    {  
     test: "test1",  
     Attach: [{  
        Type: "img",  
        Url: "https://url.com/dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com/dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com/dummy/"
     },
     {  
        Type: "img",
        Url: "https://url.com/dummy/"
     }] 
   }  
 

Как вы можете видеть, свойства, которые мне нужно изменить, находятся внутри массива.

Мне нужен скрипт для проверки во всей коллекции.

Спасибо вам за вашу помощь!

Ответ №1:

Вы можете использовать $regex конвейер агрегирования для поиска документов с пробелом. Затем используйте $replaceAll для замены пробела косой чертой. Наконец $merge , верните результат в исходную коллекцию.

Вот игровая площадка Монго для вашей справки.