Это тоже смутило меня, потому что я исходил из фона C.
В C переменная - это место в памяти с определенным типом. Назначение переменной копирует данные в ячейку памяти переменной.
Но в Python переменные действуют скорее как указатели на объекты. Поэтому присвоение одной переменной другой не создает копию, она просто превращает это имя переменной в один и тот же объект.
Вот пример моего кода, который работает для поиска проекта и добавления дополнительных примечаний в массив.
Data.findOneAndUpdate(
{ _id: req.body._id },
{
$push: {
time: req.body.value
},
new: true
}
)
.then(doc => {
res.send(doc);
})
.catch(err => {
console.error(err);
});
});
Вы также можете заглянуть в $pushAll
, если вы обрабатываете несколько значений, входящих в массив, а также $each
они имеют различное использование, но могут вам помочь. Способ, который я показал здесь, заключается в том, чтобы просто вставить новое значение в массив, который уже существует в базе данных.