javascript - (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}})
推荐阅读
- algorithm - 密集图中有多少条边
- azure - 如何在 azure 数据工厂中使用 jsonNodeReference 展平多个子节点
- php - 在 Laravel 中合并 2 个数据变量
- javascript - 如何用jquery总结每个TR的所有持续时间(hh:mm)?
- css - 为什么 SCSS 变量不会改变媒体查询的值?
- reactjs - 构建文件名称更改 - 从创建反应应用程序生成的文件
- javascript - 如果广告元数据,则注入 mp3
- java - 如何将活动保存为带有数据的 PDF 文件
- java - 将字符串转换为其数值时输出无效
- testing - 如何在 JMeter 非 GUI 中禁用测试用例?