我经历了很多光标迭代问题,但没有看到任何可以解决我的问题。
我有一个以下形式的数据库
[{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/