尝试迭代pymongo中的“ subdictionaries”

时间:2018-12-20 23:56:45

标签: python mongodb pymongo

尝试遍历具有其他“子目录”的mongo集合时,我遇到很多麻烦。

基本上,在我的集合的结构中,我有一个代表其他字符串的对象:

例如:

我正在尝试获取此收藏集的统计信息

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 :(得分:0)

我已通过首先遍历统计信息然后分别检查总数,添加和删除来解决此问题:

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]