好的,我有一个如下所示的对象集合:
{
"address":{
"building":"1007",
"coord":[
-73.856077,
40.848447
],
"street":"Morris Park Ave",
"zipcode":"10462"
},
"borough":"Bronx",
"cuisine":"Bakery",
"grades":[
{
"date":{
"$date":1393804800000
},
"grade":"A",
"score":2
},
{
"date":{
"$date":1378857600000
},
"grade":"A",
"score":6
},
{
"date":{
"$date":1358985600000
},
"grade":"A",
"score":10
},
{
"date":{
"$date":1322006400000
},
"grade":"A",
"score":9
},
{
"date":{
"$date":1299715200000
},
"grade":"B",
"score":14
}
],
"name":"Morris Park Bake Shop",
"restaurant_id":"30075445"
}
这只是这些元素集合中的一个元素。例如,如何编写 MongoDB 查询,以便获取分数总和大于 70
的餐馆?
我是 MongoDB 新手,如果问题重复,我很抱歉,但我没有找到任何有用的东西。
最佳答案
您可以使用$reduce计算数组的总和并将其放入 $expr 内,尝试:
db.col.aggregate([
{
$match: {
$expr: {
$gte: [
{ $reduce: { input: "$grades", initialValue: 0, in: { $add: [ "$$value", "$$this.score" ] } } },
70
]
}
}
}
])
关于mongodb - 如何求数组内所有元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405777/