【问题标题】:mongodb query to get average of cities populationmongodb查询以获取城市人口的平均值
【发布时间】:2015-06-27 11:25:48
【问题描述】:

我在网上做一个练习,上面写着: 请计算人口超过 25,000 人的加利福尼亚(简称 CA)和纽约(NY)城市的平均人口。

对于这个问题,假设出现在多个州的城市名称代表两个不同的城市。

请注意: 不同的州可能有相同的城市名称。 一个城市可能有多个邮政编码。

一个文档:

db.zips.findOne()

{
        "_id" : "92278",
        "city" : "TWENTYNINE PALMS",
        "loc" : [
                -116.06041,
                34.237969
        ],
        "pop" : 11412,
        "state" : "CA"
}

我的查询:

db.zips.aggregate([{$group:{ _id: {state: "$state", city: "$city", zip: "$_id"
}, pop: {$sum: "$pop"}}},{$match:{pop:{"$gt":25000}, "_id.state": {$in: ["CA", "
NY"]}}}, {$group: {_id:0, avg: {$avg: "$pop"}}}])
{ "_id" : 0, "avg" : 41485.69565217391 }

但它不正确,我错过了什么?

【问题讨论】:

  • 真的应该自己完成这些练习。通过让其他人为您完成作业部分(这将构成您成绩的一部分),您会错过学习效果并且通过欺骗您制作证书的评分系统对所有利益相关者来说意义和价值都较小。
  • 想领证的人让别人自己解决作业,真是可笑。当您在某家公司作为..开发人员(或?)工作时,不知何故缺少 Internet 连接,您会怎么做?求老板解决?还是你的领导?

标签: mongodb mongodb-query


【解决方案1】:

我想说一个城市可以有不同的邮政编码,在您的查询中,您将具有不同邮政编码的城市考虑为不同的城市。

所以,我会从您的第一组中删除 zip 部分:

db.zips.aggregate([
    {
        $group: { 
            _id: {state: "$state", city: "$city"}, 
            pop: {$sum: "$pop"}
        }
    },
    {
        $match:{
            pop:{"$gt":25000}, "_id.state": {$in: ["CA", "NY"]}
        }
    }, 
    {
        $group: {
            _id:0, 
            avg: {$avg: "$pop"}
        }
    }
])  

【讨论】:

  • 其他问题,如何去掉答案中的id?
  • 在聚合末尾添加元素$project:{$project: {_id:0, avg:1}}
  • 韦斯洛。帮助别人很好,但在这种情况下就不行了。这个任务必须由人自己解决。
【解决方案2】:

您可以尝试以下代码来找出该州的平均人口。您还可以找到其他相关信息 比如哪个是最大或最小的城市,以及在同一个查询中使用如下聚合器的人口。

db.zips.drop()

    db.zips.insert({
    "_id" : "1",
    "city" : "C1",
    "pop" : 100,
    "state" : "CA"
    })

    db.zips.insert({
    "_id" : "2",
    "city" : "C2",
    "pop" : 50,
    "state" : "CA"
    })

    db.zips.insert({
    "_id" : "3",
    "city" : "C3",
    "pop" : 500,
    "state" : "CA"
    })

    db.zips.insert({
    "_id" : "4",
    "city" : "C4",
    "pop" : 80,
    "state" : "CA"
    })

    db.zips.aggregate([{$group:{ _id: {state: "$state", city : "$city"}, pop: {$sum : "$pop"} }},
    { $sort: { pop: 1 } },
    { $group:
    {
    _id : "$_id.state",
    biggestCity:  { $last: "$_id.city" },
    biggestPop:   { $last: "$pop" },
    smallestCity: { $first: "$_id.city" },
    smallestPop:  { $first: "$pop" }
    }
    }

])

您可以在下面的链接中找到全部信息。

http://docs.mongodb.org/manual/tutorial/aggregation-zip-code-data-set/

-$achin.

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2013-03-25
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2017-07-09
    • 2016-12-28
    相关资源
    最近更新 更多