mongodb - 使用聚合的 $lt 100 的 $sum

标签 mongodb mongodb-query aggregation-framework

我正在尝试使用 $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/

相关文章:

node.js - TypeError : db. 模型不是函数

node.js - Nodejs MongoDB 连接池是如何工作的?

javascript - 无法发布/错误 Node.JS

聚合查询中的 Mongodb 限制数组

java - Java中如何做Mongodb聚合算术运算符?

c# - MongoDB 驱动程序 2.2 的动态类型 - 如何不序列化 _t 类型鉴别器?

javascript - 如果子文档值不存在,Mongodb 将插入到子文档中

node.js - 我不能同时使用 $set 运算符和 $inc 运算符,只有一个在我的情况下有效

MongoDB聚合与数组值的总和

mongodb - 在 mongodb 集合中查找最旧/最年轻的帖子