如何计算mongodb中的总和(数组字段)的乘积?

时间:2019-03-15 12:02:34

标签: mongodb

//样品收集

db.grades.insertMany([{ _id: 1, quizzes: [ 1, 2, 3 ] },
{ _id: 2, quizzes: [ ] },
{ _id: 3, quizzes: [ 3, 8, 9 ] }])

以下是我正在使用并获取结果的查询。 //总和

db.grades.aggregate(
   [
    { $project:
         { sumof:
            {
              $map:
                 {
                   input: "$quizzes",
                   as: "grade",
                   in: { $sum :[ "$$grade", "$$grade" ] }
                 }
            }
         }
      },

    {   $project :
        { "productOfSum":
            { $reduce :
                { input : '$sumof',
                    initialValue: 1,
                in : {$multiply :["$$value","$$this"]}
                }
            }
        }
    }   
    ]
)

查询的输出如下。

{"_id":1,"productOfSum":48}
{"_id":2,"productOfSum":1}
{"_id":3,"productOfSum":1728}

对于数组“ _ id:2” 的值是否会以 1 的方式给出建议?

1 个答案:

答案 0 :(得分:0)

尝试一下: db.grades.aggregate(    [

{$project:
{quizzes:
    {$cond:
        [{$eq: [{$size: "$quizzes"}, 0]} , [0], "$quizzes"] } 
    }
 },

{ $project:
     { sumof:
        {
          $map:
             {
               input: "$quizzes",
               as: "grade",
               in: { $sum :[ "$$grade", "$$grade" ] }
             }
        }
     }
  },

{   $project :
    { "productOfSum":
        { $reduce :
            { input : '$sumof',
                initialValue: 1,
            in : {$multiply :["$$value","$$this"]}
            }
        }
    }
}   
]