我有一个 mongo 数据库,我在其中创建了一个记录,该记录在数组中有一个对象(例如,员工:[{name:Bob, Age: 30}]。我现在想更新数组中的对象,使其看起来像 [{name:Bob, age: 30, pay:400}]。我如何在 Node/快速 route 做到这一点?如果我使用类似的东西:
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 上推送对象和数组等的问题,但我找不到与这种情况类似的例子。谢谢!
最佳答案
你需要有你要改变的对象的索引,然后你这样写:
'array.index.keyToUpdate'
.
如果您在更新操作之前有对象的索引,您可以这样做:
{$set: { 'employee.<indexToChange>.pay': 400 }}
.
要使其动态化并基于您可以执行的查询:
update({ 'employee.name': 'Bob' }, {$set: { 'employee.$.pay': 400 }})
.
在本例中为 $
代表数组中第一个匹配的对象。
关于arrays - 如何将一个对象插入到mongo数组中的另一个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524127/