Скрипт MONGO mongodb для замены подстроки из элемента массива

#mongodb #mongodb-query

Вопрос:

 {
  field:"value",
  facilityId:"H001",
  alternativeId:["deafaultID#12312-213-1314"],
}
 

Я хочу заменить весь документ «defaultID» из массива alternativeId и изменить на «NEWID», только если идентификатор объекта «H001».

Комментарии:

1. вы можете использовать $replaceOne и $map операторов.

2. как.. вы можете привести мне пример

Ответ №1:

  • facilityId: "H001" условие соответствия
  • $map для повторения цикла alternativeId массива
  • $replaceOne чтобы заменить строку поиска заменой
 db.collection.update(
  { facilityId: "H001" },
  [{
    $set: {
      alternativeId: {
        $map: {
          input: "$alternativeId",
          in: {
            $replaceOne: {
              input: "$this",
              find: "deafaultID",
              replacement: "NEWID"
            }
          }
        }
      }
    }
  }],
  { multi: true }
)
 

Игровая площадка

Комментарии:

1. я отредактировал свой qstn . на самом деле я хочу проверить facilityid как условие или фильтр. замените только альтернативный идентификатор указанного объекта

2. хорошо, вы хотите обновить базу данных или вам просто нужно только отформатировать результат?

3. @Alfjoy вы проверили обновленный ответ, он работает?