Mongodb 如何求数组中所有元素的和

Mongodb 如何求数组中所有元素的和,mongodb,sum,mongodb-query,aggregation-framework,Mongodb,Sum,Mongodb Query,Aggregation Framework,好的,我有一组对象,看起来像这样: { "address":{ "building":"1007", "coord":[ -73.856077, 40.848447 ], "street":"Morris Park Ave", "zipcode":"10462" }, "borough":"Bronx", "cuisine":"Bakery", "grades":[ { "date":{ "$date

好的,我有一组对象,看起来像这样:

{  
 "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新手,如果问题重复,很抱歉,但我没有找到任何有用的东西。

您可以使用计算数组的和并将其放入,请尝试:


您可以使用聚合

db.collection.aggregate([
  { "$match": {
    "$expr": {
      "$gte": [ 
        { "$sum": "$grades.score" }, 
        70
      ]
    }
  }}
])
或者使用find查询

db.collection.find({
  "$expr": {
    "$gte": [ 
      { "$sum": "$grades.score" },
      70
    ]
  }
})

$$this.grade
应该是
$$this.score
db.collection.find({
  "$expr": {
    "$gte": [ 
      { "$sum": "$grades.score" },
      70
    ]
  }
})