我正在尝试使用 $sum 计算每个州的总和。然后使用 $lt 仅显示小于 100 的州。
每笔金额的工作总计:
db.zipcode.aggregate([{$group:{_id:"$state", count_of_cities:{$sum:1}}}])
尝试显示小于 100 的总和:
db.zipcode.aggregate([{$group:{_id:"$state"}, less_than:{$cond:{if:{$lt:[$sum:1,100]}}}}])
样本集合:
{ "_id" : "01001", "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA" }
{ "_id" : "05042", "city" : "RYEGATE", "loc" : [ -72.072669, 44.193453 ], "pop" : 328, "state" : "VT" }
{ "_id" : "05043", "city" : "EAST THETFORD", "loc" : [ -72.19668, 43.825757 ], "pop" : 657, "state" : "VT" }
{ "_id" : "08052", "city" : "MAPLE SHADE", "loc" : [ -74.99464399999999, 39.951085 ], "pop" : 19365, "state" : "NJ" }
整个集合可以在 MongoDB 官方网站上找到:http://media.mongodb.org/zips.json
最佳答案
您可以执行:
- 1
$group
用于将城市汇总为count_of_cities
- 1
$match
用于过滤您的金额
查询是:
db.zipcode.aggregate([{
$group: { _id: "$state", count_of_cities: { $sum: 1 } }
}, {
$match: {
count_of_cities: { $lt: 100 }
}
}])
关于mongodb - 使用聚合的 $lt 100 的 $sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333815/