Javascript 如何使用underline.js映射Reduce嵌套数组

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

鉴于:

我想要的是按组进行过滤。id==接收NACIDO和剂量[]。id==BCG\u UNICA然后得到频率的总总和[]。应用的数量

我试过:

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;
          }
        });
      }
    });
  });
});