如何在mongo中将对象插入数组中的另一个对象

时间:2019-02-04 20:51:26

标签: arrays node.js mongodb express javascript-objects

我有一个mongo db,我在其中创建了一个在数组中具有对象的记录(例如,雇员:[{name:Bob,Age:30}]。我现在想更新数组中的对象,以便看起来例如[{name:Bob,年龄: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,年龄:30,pay:400},{pay:XXX}],而不是将其插入到已有的对象中。我知道关于在SO上放入对象和数组等有很多问题,但是我找不到与这种情况类似的示例。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要具有要更改的对象的索引,然后将其编写为:

'array.index.keyToUpdate'

如果在更新操作之前具有对象的索引,则可以这样操作:

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

要使其动态并根据查询,您可以执行以下操作:

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

在这种情况下,$代表数组中的第一个匹配对象。