1

我正在使用 python 和 pymongo。

在 mongo 集合之一中保存来自不同国家的不同消息。每份文件都有一个国家短代码来表明他们的国家。我可以知道如何将它们分组并获取每个国家/地区代码的计数吗?

例如

{u'tweet': u"If you're male and own an iPhone, get new star soccer. Holy shit it's addictive", u'loc': u"US", u'_id': ObjectId('515ecace4e18187ca67ddfcb'), u'time': datetime.datetime(2013, 4, 5, 12, 59, 57)}

上面是一行带有位置的消息,在我的数据库中可能有 US、SG、AU 等等......不同的位置会有不同的消息数量。我该如何查询或者这是任何可能的方法?谢谢

更新

我想获得计数的原因是因为我需要将数据注入到以下代码中,以便谷歌图表为我生成图表。

var data = google.visualization.arrayToDataTable([
      ['Country', 'Popularity'],
      ['Germany', 200],
      ['United States', 300],
      ['Brazil', 400],
      ['Canada', 500],
      ['France', 600],
      ['RU', 700]
    ]);
4

2 回答 2

2

使用聚合框架。

db.collection.aggregate({$group:{_id:"$loc", count: {$sum:1}}}

这将为您返回每个国家/地区的提及次数。

于 2013-04-05T15:47:42.417 回答
1

我的第一反应是在阅读 MongoClient 游标时将记录分组到字典中。每个键都是一个国家,每个值都是该国家所有记录的列表。

import pymongo
con = pymongo.MongoClient()
db = con.myDatabase
col = db.myCollection
cursor = col.find()

data = {}
for c in cursor:
    if not c["loc"] in data.keys():
        data[c["loc"]] = []
    data[c["name"]].append(c)

这当然假设每条记录都有您示例中的“loc”键。

于 2013-04-05T13:39:17.583 回答