【问题标题】:CursorNotFound error in PymongoPymongo 中的 CursorNotFound 错误
【发布时间】:2016-11-16 18:14:03
【问题描述】:

我正在尝试在 Python(使用 pymongo)中运行以下命令,但是我总是收到错误消息:

CursorNotFound: Cursor not found, cursor id: 16172789264

我的代码(我尝试设置“batch_size”,但错误消息继续):

import pymongo

client = pymongo.MongoClient()
db = client['tese']
carteiras_cvm = db['carteiras_cvm']

pipeline_acoes =[{"$unwind":"$posicao"},
           {"$match" : {"posicao.detalhes.Tipo de Aplicação:" : { "$in" : ['Ações','Brazilian Depository Receipt - BDR',
           'Ações e outros TVM cedidos em empréstimo','AÇÕES RECEBIDAS EM BONIFICAÇÃO']}}},
           {"$project":{"cnpj_fundo":"$cnpj_fundo", "data_carteira":"$data_carteira", "tipo_aplicacao":"$posicao.detalhes.Tipo de Aplicação:","cod_ativo":"$posicao.detalhes.Cod Ativo:","cod_isin":"$posicao.detalhes.Cod ISIN:","cod_isin":"$posicao.detalhes.Cod ISIN:","descricao":"$posicao.detalhes.Descrição:","posicao_final":"$posicao.posicao_final","perc_carteira":"$posicao.perc_carteira","pl_fundo":"$pl_posicao"}}]


def aggregate(db, pipeline):
    return [doc for doc in carteiras_cvm.aggregate(pipeline).batch_size(5)]

resultados_acoes = aggregate(carteiras_cvm, pipeline_acoes)

有什么想法吗?

【问题讨论】:

标签: mongodb pymongo


【解决方案1】:

尝试在光标中添加“no_cursor_timeout=True”。

[doc for doc in carteiras_cvm.aggregate(pipeline,no_cursor_timeout=True).batch_size(5)]

请告诉我这是否适合你。

如果上面的代码不起作用,试试这个链接..

Is it possible to create an aggregation in Pymongo with no timeout for the cursor?

【讨论】:

  • 我试过这个,但最后我格式化了我的笔记本电脑,然后错误消息消失了
【解决方案2】:

no_cursor_timeout 对 pymongo 中的方法 aggregate() 无效。 您可以改用maxTimeMS

maxTimeMS(int): 允许操作的最长时间 以毫秒为单位运行。

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2019-01-02
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多