У меня есть два поддокумента, которые в основном имеют одинаковую структуру. Каждый из этих документов включает в себя массив объектов с именем scheduleInfo . Этот массив структурирован следующим образом.
EquipmentList
scheduleInfo: [{month: String, hours: Number, frequency: String, equipId: String, uniqId: String}]
AdditionalLabor
scheduleInfo: [{month: String, hours: Number, frequency: String, addLaborId: String, uniqId: String}]
Это код I используйте для добавления объектов в scheduleInfo в equipmentList
OpportunityModel.bulkWrite(
equipSch.map(d => ({
updateOne: {
filter: { sfOppId: oppId },
update: {
$set: { "equipmentList.$[e].scheduleInfo": d.equipSch }
},
upsert: true,
arrayFilters: [{ "e.sfEquipId": d.equipId }]
}
}))
)
, этот код выполняется правильно. Поскольку scheduleInfo в AdditionalLabor по сути одно и то же, этот код я использую для добавления объектов в scheduleInfo в AdditionalLabor
OpportunityModel.bulkWrite(
additionalLaborSch.map(d => ({
updateOne: {
filter: { sfOppId: oppId },
update: {
$set: { "additionalLaborCostInfo.$[e].scheduleInfo": d.schedule }
},
upsert: true,
arrayFilters: [{ "e._id": d.addLaborId }]
}
}))
ЭТО НЕ РАБОТАЕТ Я получаю чтение, показывающее, что он нашел соответствующие документы, но не изменил ничего.
Если я избавлюсь от фильтра списка и использую подстановочный знак $ [], он изменяет документ, но устанавливает одно и то же расписание для всех дополнительных элементов Labor, что неверно. Я давно смотрю на этот код и не знаю, почему он не работает. Пожалуйста, помогите!