我正在制作一个 node.js 网站。我有一个posts
集合,其中帖子的评论存储在一个数组中,评论作者的详细信息作为嵌套对象。
这是新帖子的架构:
{
"text": text,
"image": image,
"video": video,
"type": type,
"createdAt": createdAt,
"reactions": [],
"comments": [],
"shares": [],
"user": {
"_id": user._id,
"username": user.username
}
}
这是被推送到其帖子的新评论:
$push: {
"comments": {
"_id": commentId,
"user": {
"_id": user._id,
"type": type,
"name": user.name,
"profileImage": user.photo,
},
"comment": comment,
"createdAt": createdAt,
"replies": []
}
}
为了避免将评论存储在另一个集合中并进行复杂的多次查找(我正在进行 1 次查找以获取帖子作者详细信息,但无法添加另一个以使其适用于评论)以合并新闻源,我决定保存评论及其作者的详细信息嵌入到帖子中。
现在,当用户个人资料图片更新时,所有评论都必须更新以显示新图片。
我在 server.js 文件中包含了这个 updateMany 查询以及照片更新路由:
database.collection("posts").updateMany({
"comments.user._id": user._id,
"comments.user.type": "friend"
}, {
$set: {
"comments.$.user.profileImage": photo
}
});
这里的问题是这只会更新所有帖子中的第一个匹配评论。
我需要更新所有帖子中的所有匹配评论。
我实际上只是通过以下 youtube 视频来学习,所以请帮助我。