无法在视图上将pymongo EXHAUST光标类型与find()一起使用(旧式查找操作)

时间:2019-03-12 11:44:56

标签: mongodb python-2.7 pymongo

我正试图通过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)

有人以前见过这个错误并设法解决吗?

我的规格:

  • python2.7
  • pymongo 3.7.1
  • mongodb 3.6.3

0 个答案:

没有答案