我经历了许多游标迭代问题,但没有发现任何可以解决我问题的方法。
我有一个形式的数据库
[{book:'A', author:'John'}, {book:'B', author:'Tony'}, {book:'C', author:'John'}...]
同一作者可能有多本书。
我需要的是2个数组
authors = ['John','Tony','John']
books = ['A','B','C']
其中对应元素在两个数组中的索引相同。
现在,我通过游标迭代来获取它。
authors =[]
books =[]
cursor = collection.find()
for elem in cursor:
authors.append(elem['author'])
books.append(elem['book'])
但这很慢。
我有成千上万份文件。
是否有其他类似查询的方式来更快地获得结果。
最佳答案
可以执行汇总查询以收集所有作者和书籍。例如
pipeline = [
{
'$group': {
'_id': None,
'authors': { '$push': '$author' },
'books': { '$push': '$book' }
}
}
]
result = collection.aggregate(pipeline))
In [2]: print(result)
[{'_id': None, 'authors': ['John', 'Tony', 'John'], 'books': ['A', 'B', 'C']}]
关于python - Pymongo光标迭代的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49626941/