(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}}}

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

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

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

最新更新