Попытка перебрать «субдиректории» в пимонго - PullRequest
0 голосов
/ 21 декабря 2018

У меня много проблем с попыткой перебрать коллекцию Монго, на которой есть другие "субдиктарии".

По сути, внутри структуры моей коллекции у меня есть объект, который представляет другие строки:

Например:

Я пытаюсь получить статистику для этой коллекции:

MongoDB Structure

Это код, который я сейчас использую:

cursor = mycol.find(
    {}, {'_id': 1, 'stats.total': 1, 'stats.additions': 1, 'stats.deletions': 1})

with open('commits.csv', 'w') as outfile:
    fields = ['id', 'stats.total', 'stats.additions', 'stats.deletions']
    write = csv.DictWriter(outfile, fieldnames=fields)
    write.writeheader()
    for commits in cursor:
        id = commits['_id']
        for stats in commits['stats']:
            flattened_record = {
                '_id': id,
                'stats.total': stats['total'],
                'stats.additions': stats['additions'],
                'stats.deletions': stats['deletions']
            }
            write.writerow(flattened_record)

Я получаю сообщение об ошибке TypeError: строковые индексы должны быть целыми числами, а тип объекта stats выглядит как Unicode.

Кто-нибудь знает, как исправитьэто?

Спасибо за ваше время,

1 Ответ

0 голосов
/ 03 января 2019

Я решил эту проблему, сначала перебирая статистику, а затем отдельно проверяя сумму, добавления и удаления:

if 'stats' in commits:
    stats = commits['stats']
    for key in stats:
        if key == 'deletions':
            deletions = stats[key]
        elif key == 'additions':
            additions = stats[key]
        else:
            total = stats[key]
...