Javascript 如何使用underline.js映射Reduce嵌套数组
鉴于: 我想要的是按组进行过滤。id==接收NACIDO和剂量[]。id==BCG\u UNICA然后得到频率的总总和[]。应用的数量 我试过:Javascript 如何使用underline.js映射Reduce嵌套数组,javascript,node.js,mapreduce,nested,underscore.js,Javascript,Node.js,Mapreduce,Nested,Underscore.js,鉴于: 我想要的是按组进行过滤。id==接收NACIDO和剂量[]。id==BCG\u UNICA然后得到频率的总总和[]。应用的数量 我试过: appliedDoses = { "_id": "MAIN", "scheme": { "_id": "MAIN_SCHEME", "name": "ESQUEMA CLASICO", "vaccines": [ { "_id": "BCG", "__v": 0, "dos
appliedDoses = {
"_id": "MAIN",
"scheme": {
"_id": "MAIN_SCHEME",
"name": "ESQUEMA CLASICO",
"vaccines": [
{
"_id": "BCG",
"__v": 0,
"doses": [
{
"_id": "BCG_UNICA",
"frequencies": [
{
"_id": "BCG_UNICA_RECIEN_NACIDO",
"group_type": {
"_id": "RECIEN_NACIDO",
"name": "RECIEN NACIDO"
},
"__v": 0,
"status": true,
"number_applied": 10
}, ...
但是我的代码效率不高,我想知道是否可以使用MapReduce来改进它。谁能给我一个提示吗?非常感谢您的帮助 我对您正在处理的对象有点困惑,所以我将尝试抽象处理。如果你把它分解,你可能希望在这里做的事情会更容易、更快 获取通过以下方式筛选得到的集合:group\u type.\u id==receien\u NACIDO&&doges.\u id 通过使用u.pull拔出应用的数字_来获取数组
用sum来减少它:u.reduceEnumApplieDarray,functionsum,x{return sum+x},0 您已经用MongoDB标记了这个问题,并提到了MapReduce,但正如所述,这似乎是一个客户端对象。您给定的对象是一个MongoDB文档,而您的查询是一种连接来自多个集合的数据的方法吗?关于您试图解决的问题的更多上下文可能会有所帮助。我将MongoDB更改为mapreduce标记,是的,我从以下代码行获得了一个MongoDB文档:AppliedDose.find.where'clue.equalscue.where'applied_date.gte startDate.lte endDate.exec function err,AppliedDose{
async.each(appliedDose, function(scheme){
async.each(scheme.scheme.vaccines, function(vaccine){
async.each(vaccine.doses, function(dose){
if(dose._id == getDose) {
async.each(dose.frequencies, function(frequencie){
if(frequencie.group_type._id == getGroup) {
applied += frequencie.number_applied;
}
});
}
});
});
});