我的应用程序中有两个模型:项目和评论。一个 Item 可以有许多 Comments,并且 Comment 实例包含对具有键“comment”的 Item 实例的引用,以跟踪关系。
现在,当用户请求特定 URL 时,我必须发送所有项目的 JSON 列表及其评论计数。
function(req, res){
return Item.find()
.exec(function(err, items) {
return res.send(items);
});
};
我不确定如何将评论计数“填充”到项目中。这似乎是一个常见问题,我倾向于认为应该有一些比暴力更好的方法来完成这项工作。
所以请分享您的想法。您将如何“填充”项目的评论计数?
最佳答案
检查 MongoDB 文档并查找方法 findAndModify()
- 使用它您可以自动更新文档,例如添加注释并同时增加文档计数器。
查找并修改
findAndModify 命令以原子方式修改并返回单个文档。默认情况下,返回的文档不包含更新时所做的修改。要返回包含更新后所做修改的文档,请使用新选项。
示例
使用update
选项,更新运算符$inc
用于计数器,$addToSet
用于将实际注释添加到嵌入数组评论。
db.runCommand(
{
findAndModify: "item",
query: { name: "MyItem", state: "active", rating: { $gt: 10 } },
sort: { rating: 1 },
update: { $inc: { commentCount: 1 },
$addToSet: {comments: new_comment} }
}
)
参见:
关于node.js - 如何将评论计数填充到项目列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270025/