Как вставить объект в другой объект в массиве в монго - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть база данных mongo, в которой я создал запись, в которой есть объект в массиве (например, сотрудники: [{name: Bob, Age: 30}]. Теперь я хочу обновить объект в массиве, чтобы он выгляделкак [{имя: Боб, возраст: 30, оплата: 400}]. Как мне сделать это в рамках узла / экспресс-маршрута? Если я использую что-то вроде:

router.put("/addPay/:id",function(req,res){
Team.findByIdAndUpdate(req.params.id,{$push:{employee: {$each: 
[{pay:req.body.pay}]}}},........

, это просто подталкивает {pay:XXX} в виде отдельного объекта в массив [{name: Bob, age: 30, pay: 400}, {pay: XXX}] вместо того, чтобы вставлять его в уже существующий объект. Я знаю, что есть много вопросов о том,объекты, массивы и т. д. на SO, но я не смог найти подобный пример в этой ситуации. Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

У вас должен быть индекс объекта, который вы хотите изменить, затем вы пишете его так:

'array.index.keyToUpdate'.

Если у вас есть индекс объекта дооперацию обновления вы можете сделать так:

{$set: { 'employee.<indexToChange>.pay': 400 }}.

Чтобы сделать его динамическим и основанным на запросе, вы можете сделать:

update({ 'employee.name': 'Bob' }, {$set: { 'employee.$.pay': 400 }}).

В этом случае $ обозначает первый соответствующий объект в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...