我有一个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上放入对象和数组等有很多问题,但是我找不到与这种情况类似的示例。谢谢!
答案 0 :(得分:1)
您需要具有要更改的对象的索引,然后将其编写为:
'array.index.keyToUpdate'
。
如果在更新操作之前具有对象的索引,则可以这样操作:
{$set: { 'employee.<indexToChange>.pay': 400 }}
。
要使其动态并根据查询,您可以执行以下操作:
update({ 'employee.name': 'Bob' }, {$set: { 'employee.$.pay': 400 }})
。
在这种情况下,$
代表数组中的第一个匹配对象。