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

Arrays 如何在mongo中将一个对象插入数组中的另一个对象,arrays,node.js,mongodb,express,javascript-objects,Arrays,Node.js,Mongodb,Express,Javascript Objects,我有一个mongo db,我在其中创建了一个记录,该记录在数组中包含一个对象(例如,雇员:[{name:Bob,Age:30})。我现在想更新数组中的对象,使其看起来像[{name:Bob,Age:30,pay:400}]。如何在节点/快速路由中执行此操作?如果我使用类似于: router.put("/addPay/:id",function(req,res){ Team.findByIdAndUpdate(req.params.id,{$push:{employee: {$each: [{p

我有一个mongo db,我在其中创建了一个记录,该记录在数组中包含一个对象(例如,雇员:[{name:Bob,Age:30})。我现在想更新数组中的对象,使其看起来像[{name:Bob,Age:30,pay: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}]而不是将其插入到已经存在的对象中。我知道有很多关于推入对象和数组等的问题,但我找不到类似的例子。谢谢!

您需要有要更改的对象的索引,然后按如下方式编写:

“array.index.keyToUpdate”

如果在更新操作之前有对象的索引,则可以按如下方式执行:

{$set:{'employee..pay':400}

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

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


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

请求正文是否包含员工姓名?否是工资金额(例如400)。如果我console.log它,我会从我的表单中得到传递的值,这样就可以工作了…那么你怎么知道哪个员工应该设置这个值?你在那个数组中总是有一个值吗?是的,完全正确-只有一个员工。我使用的模型模式实际上比这个更复杂-我只是做这个来解决问题的核心。好吗,那么@cowCrazy提供的答案对您来说应该没问题,只需使用
employee.0.pay