//样品收集
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 的方式给出建议? 空 ?
答案 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"]}
}
}
}
}
]
)