Я не совсем понял, чего вы пытаетесь достичь (обновить последний элемент массива или обновить элемент с датой '2019-02-15').
Если вы хотите обновить последний элементмассив в ваших документах
На основе вашего образца (поскольку вы использовали курсор, я адаптировал его для обновления всей базы данных, используйте осторожно. Если вы хотите обновить только 1 документ, вы не должны использовать .find({})
const cursor = coll1.find({}).limit(1);
while (cursor.hasNext()) {
const item = cursor.next();
const update_index = doc['monthly_record'].length - 1;
coll1.update_one({ _id: item._id },
{ '$set': { `monthly_record.${update_index}.average` :'60F' } }
)
}
Если вы хотите обновить элемент в массиве по определенному индексу
Вы сказали I want to update average of 2019-02-15
, это означает, что вы уже знаете фильтр, поэтому вы можете сделать это в одном запросе:
coll1.update({ 'monthly_record.date': '2019-02-15' },
{ '$set': { 'monthly_record.$.average' :'60F' } },
{ multi: true }
)
(Удалить multi: true
, если вы хотите обновить только первый соответствующий документ)