Python Pymongo游标迭代的替代方案
我经历了许多游标迭代问题,但没有发现任何可以解决我问题的方法 我有一个表格数据库Python Pymongo游标迭代的替代方案,python,mongodb,python-3.x,pymongo,Python,Mongodb,Python 3.x,Pymongo,我经历了许多游标迭代问题,但没有发现任何可以解决我问题的方法 我有一个表格数据库 [{book:'A', author:'John'}, {book:'B', author:'Tony'}, {book:'C', author:'John'}...] 同一作者可能有多本书 我需要的是2个数组 authors = ['John','Tony','John'] books = ['A','B','C'] 在两个数组中,相应的元素落在同一索引中 现在我通过游标迭代得到它 authors =[] b
[{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'])
但这是非常缓慢的。
我有成千上万的文件。
有没有其他类似查询的方法可以更快地获得结果。可以执行聚合查询来收集所有作者和书籍。e、 g
请注意,您需要根据当前的内存处理对其进行基准测试
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']}]