#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 вы проверили обновленный ответ, он работает?