我正试图通过python mongodb库pymongo从mongodb view中获取大量文档。
在遇到性能问题时,我想对find()
查询使用EXHAUST CursorType。
如果我尝试在mongodb colleciton上使用它,效果很好,例如:
cursor = db.my_collection.find(
{}, cursor_type=CursorType.EXHAUST, batch_size=500)
但是,如果我尝试在视图而不是集合上执行相同的操作,则会出现错误:
cursor = db.my_view.find(
{}, cursor_type=CursorType.EXHAUST, batch_size=500)
pymongo.errors.OperationFailure: database error: Namespace my_db.my_view is a view. Legacy find operations are not supported on views. Only clients which support the find command can be used to query views.
如果我不指定EXHAUST游标类型,它将很好地工作,但这会导致严重的性能损失。
同样值得注意的是,我可以使用aggregate()
代替find()
,它虽然速度更快,但不及find(cursor_type=EXHAUST)
。
有人以前见过这个错误并设法解决吗?
我的规格: