Javascript 我如何将map reduce与MongoDB和JS结合使用来获得这个结果?
我是JS的新手,所以我在mongodb中使用map reduce时遇到了一些大问题,因为我缺乏知识,我有一个名为dailyAlerts的集合:Javascript 我如何将map reduce与MongoDB和JS结合使用来获得这个结果?,javascript,mongodb,mapreduce,Javascript,Mongodb,Mapreduce,我是JS的新手,所以我在mongodb中使用map reduce时遇到了一些大问题,因为我缺乏知识,我有一个名为dailyAlerts的集合: { "_id" : 25, "title" : "Other… Title Test Polygon 2", "alertDescription" : "Other… Description Test Polygon 2", "alertDateTime" : 1507784400100,
{
"_id" : 25,
"title" : "Other… Title Test Polygon 2",
"alertDescription" : "Other… Description Test Polygon 2",
"alertDateTime" : 1507784400100,
"alertLatitude" : 20.5774756,
"alertLongitude" : -103.3795262,
"alertType" : 9,
"userName" : "Azgad",
"photoLink" : "www.google.com",
"videoLink" : "www.google.com",
"__v" : 0
}{
"_id" : 26,
"title" : "Other… Title Test Polygon 4",
"alertDescription" : "Other… Description Test Polygon 4",
"alertDateTime" : 1507784400100,
"alertLatitude" : 20.5774756,
"alertLongitude" : -103.3795262,
"alertType" : 5,
"userName" : "Azgad",
"photoLink" : "www.google.com",
"videoLink" : "www.google.com",
"__v" : 0
}
{
"_id" : 27,
"title" : "Other… Title Test Polygon 6",
"alertDescription" : "Other… Description Test Polygon 6",
"alertDateTime" : 1507784400500,
"alertLatitude" : 20.5774756,
"alertLongitude" : -103.3795262,
"alertType" : 1,
"userName" : "Azgad",
"photoLink" : "www.google.com",
"videoLink" : "www.google.com",
"__v" : 0
}
这里的重要字段是“alertType”,我想使用map reduce根据alertType(可用值为1-9)提供所有警报的计数,或者如果找不到该alertType的文档,则输入0,此外,我还需要显示为将其插入其他集合而处理的所有文档的总数,如下所示:
{
"_id" : 4,
"dateRecord" : 3500,
"type1Count" : 0,
"type2Count" : 10,
"type3Count" : 20,
"type4Count" : 30,
"type5Count" : 0,
"type6Count" : 50,
"type7Count" : 60,
"type8Count" : 70,
"type9Count" : 80,
"totalCount" : 320,
}
非常感谢您的帮助。我想您的问题不是关于所需输出中的前两个属性值。计数可通过
reduce
收集,如下所示:
{
"_id" : 4,
"dateRecord" : 3500,
"type1Count" : 0,
"type2Count" : 10,
"type3Count" : 20,
"type4Count" : 30,
"type5Count" : 0,
"type6Count" : 50,
"type7Count" : 60,
"type8Count" : 70,
"type9Count" : 80,
"totalCount" : 320,
}
var data=[{“警报类型”:9},{“警报类型”:5},{“警报类型”:1}];
var计数=数据减少((计数,obj)=>{
计数[obj.alertType]+;
返回计数;
},数组(10)。填充(0);
控制台日志(计数)代码>
.as console wrapper{max height:100%!important;top:0;}
所需输出的前两个属性指的是什么?\u id只是一个自动生成id,dateRecord是当前执行日期的最后一天(以毫秒为单位)(如果今天是10月14日,则应该是13日)但我想你的问题不是生成这两个值,对吧?我把一些东西改成了代码,但它只给了我一个满是零的数组,你知道为什么吗//变量数据=[{“alertType”:9},{“alertType”:5},{“alertType”:1}];var data=db.dailyalerts.find({},{u id:0,alertType:1}).toArray();var counts=data.reduce((counts,obj)=>{counts[obj.alertType]+;return counts;},数组(10.fill)(0));真糟糕!我忘了用了,现在可以用了,非常感谢!