【发布时间】:2021-09-29 23:40:02
【问题描述】:
我在 Node.js 后端使用 Mongoose,我需要根据条件更新文档中数组元素的子集。我曾经使用 save() 执行操作,如下所示:
const channel = await Channel.findById(id);
channel.messages.forEach((i) =>
i._id.toString() === messageId && i.views < channel.counter
? i.views++
: null
);
await channel.save();
我想通过使用 findByIdAndUpdate 更改此代码,因为它只是一个增量,对于我的用例,不需要检索文档。关于如何执行该操作的任何建议?
当然,channel.messages 是正在讨论的数组。 views 和 counter 都是 Number 类型。
编辑 - 示例文档:
{
"_id": {
"$oid": "61546b9c86a9fc19ac643924"
},
"counter": 0,
"name": "#TEST",
"messages": [{
"views": 0,
"_id": {
"$oid": "61546bc386a9fc19ac64392e"
},
"body": "test",
"sentDate": {
"$date": "2021-09-29T13:36:03.092Z"
}
}, {
"views": 0,
"_id": {
"$oid": "61546dc086a9fc19ac643934"
},
"body": "test",
"sentDate": {
"$date": "2021-09-29T13:44:32.382Z"
}
}],
"date": {
"$date": "2021-09-29T13:35:33.011Z"
},
"__v": 2
}
【问题讨论】:
-
你能添加一个示例文档吗?
-
@J.F.是的,当然
标签: javascript node.js arrays mongodb mongoose