Mongodb 如何对同一集合中不同文档的值求和?
但是它不起作用。错误是Mongodb 如何对同一集合中不同文档的值求和?,mongodb,express,mongoose,Mongodb,Express,Mongoose,但是它不起作用。错误是参数必须是聚合管道运算符。如何实现这一点? 这是我的模式代码。 var photoSchema=新模式({ 名称:{type:String}, 电子邮件:{type:String}, 照片:{type:String}, 说明:{type:String}, 电话号码:{type:String}, 活动编号:{ 类型:Schema.Types.ObjectId, 参考:“活动”, }, 我需要将likes\u count字段添加到集合中的所有文档。您错过了输入\u id, 按指
参数必须是聚合管道运算符。
如何实现这一点?这是我的模式代码。 var photoSchema=新模式({ 名称:{type:String}, 电子邮件:{type:String}, 照片:{type:String}, 说明:{type:String}, 电话号码:{type:String}, 活动编号:{ 类型:Schema.Types.ObjectId, 参考:“活动”, },
我需要将
likes\u count
字段添加到集合中的所有文档。您错过了输入\u id
,
按指定的\u id
表达式对输入文档进行分组,对于每个不同的分组,输出文档。每个输出文档的\u id
字段包含唯一的分组依据值。有关更多信息,请参阅
您能否在问题和预期结果中添加照片收集模式。您想做什么?您需要在收集中添加新字段?还是只需要通过聚合进行计数和检索?您的问题不清楚。只需通过聚合进行计数和检索id:null的意思是什么,仍然无法理解?它需要输入,如何处理要知道按此字段分组,可以指定
\u id:“$CampaignId”
这将根据该id进行分组,--但现在我们需要对所有文档进行分组,以便\u id:null
这将对所有文档进行分组。有关更多信息,请从回答中提供的$group链接进行示例演示。我添加了Totalikes变量,但无法将其发送到前端。它显示错误Totalikes Undefined abo中可能没有匹配的文档ve$匹配阶段,移除该阶段并再次测试。已执行该操作
I have photos with an array of likes. I am using mongoose as a db. I want to sum all the numeric values in the likes count of photo collection.
exports.getAnalytics = (req, res) => {
if (!req.user) {
return res.redirect('/login');
}
Campaign.findOne({slug:req.params.slug}, (err, campaign) => {
PhotoEntries.find({ CampaignId: campaign._id}, ['Photo','Name', 'done' ,'likes_count', ], {sort:{ _id: -1} }, function(err, photos) {
PhotoEntries.countDocuments({CampaignId: campaign._id} , function (err, count) {
PhotoEntries.aggregate([
{
$group: {
_id: "$CampaignId",
Totallikes: { $sum: "$likes_count" }
}
}
])
if(req.user){
console.log(photos);
res.render('admin/analytics', {
title: 'Analytics',
campaign: campaign,
photolist : photos,
Count:count ,
Totallikes: Totallikes
});
}
// }
// ])
});
});
});
}
done: {
type: Boolean ,
},
likes_count: Number ,default: 0,
likedBy: [
{
type:Schema.Types.ObjectId,
ref: "User"
}
],
});
}
PhotoEntries.aggregate([
{
$group: {
_id: null,
Totallikes: { $sum: "$likes_count" }
}
}
])