首页 > 解决方案 > (MongoDB / Mongoose)增加对象数组中的值

问题描述

我有一个看起来像这样的文档:

{
  "id": "12345",
  "channels": [
    {
      "id": "67890",
      "count": 1
    }
  ]
}

我想要做的是将给定的通道计数增加一。所以一个用户发送一条消息,我查找用户,在“channels”数组中通过“id”找到正确的频道,并将“count”加一。

我尝试了以下查询:

UserModel.findOneAndUpdate({id: this.id}, 
  {'channels.id': channel.id}, 
  {$set: {$inc: {'channels.$.count': 1}}}

它没有失败,令人惊讶。但它也没有增加计数。

标签: javascriptmongodbmongoose

解决方案


需要两个修复:查询必须是单个对象并且$inc是单独的运算符,因此您不需要$set

UserModel.findOneAndUpdate({id: this.id, 'channels.id': channel.id},
    { $inc: {'channels.$.count': 1}})

推荐阅读