Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получить счет и сгруппировать их

Автор вопроса: 1mybОтветов: 2

Я использую питон с пимонго.

В одной из коллекций монго сохраняются разные сообщения из разных стран. Каждый документ будет иметь один короткий код страны для указания своей страны. Могу ли я узнать, как я могу сгруппировать их и получить счет для каждого кода страны?

Например

{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 и т. д.... разные местоположения будут иметь разное количество сообщений. Как я могу запросить или это какой-либо возможный подход? Спасибо

ОБНОВЛЕНИЕ

Причина, по которой я хочу получить подсчет, заключается в том, что мне нужно ввести данные в следующий код для диаграмма Google сгенерирует диаграмму для меня.

var data = google.visualization.arrayToDataTable([
      ['Country', 'Popularity'],
      ['Germany', 200],
      ['United States', 300],
      ['Brazil', 400],
      ['Canada', 500],
      ['France', 600],
      ['RU', 700]
    ]);
  • docs.mongodb.org/manual/reference/aggregation/group dm03514 05.04.2013

pythonjavascriptmongodbpymongo

Ответы

Ответ 1 · рейтинг 2 · Asya Kamsky

Используйте структуру агрегации.

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

Это вернет вам для каждой страны, сколько раз она была упомянута.

Ответ 2 · рейтинг 1 · ccray

Мой первый порыв - сгруппировать записи в словарь, когда вы читаете курсор 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" из вашего примера.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы