无法识别的管道阶段名称:pymong中的“cursor”错误

2024-05-10 08:42:40 发布

您现在位置:Python中文网/ 问答频道 /正文

myresults = db.persona.aggregate([{"$match": {'$or': [{"id": {"$gte": 1}},{"id": {"$lte": 20000}}]}},{ "$project": {"id": 1,"ward": 1}},{'cursor': {'batchSize': 0}}],useCursor=False)
for result in myresults:
    db.persona.update_many({"_id":result["_id"]},{"$set": {column_name:df1.iloc[:,m][list(result.values())[1]]}})

OperationFailure出错:无法识别的管道阶段名称:“cursor”

我怎么解决这个问题


Tags: orprojectiddbmatchresultcursoraggregate
1条回答
网友
1楼 · 发布于 2024-05-10 08:42:40

Error in OperationFailure: Unrecognized pipeline stage name: 'cursor'

方法 ^PyMongo中的{a1}指定第一个参数是pipeline,这是聚合管道阶段的列表。错误是因为cursor不是有效的Aggregation Pipeline Stage。在

因此,您可以使用以下方法更正此问题:

myresults = db.persona.aggregate([{"$match": {"$or": [{"id": {"$gte": 1}},{"id": {"$lte": 20000}}]}},{ "$project": {"id": 1,"ward": 1}}])

for result in myresults:
   print(result) # process result document. 

请注意,参数useCursor已弃用,并将在pymongov4.0+中删除。基于示例代码段,您可能希望返回一个可以迭代的cursor。在

{'cursor': {'batchSize': 0}}

同样值得注意的是,这是一个用于aggregation pipelineviamongo shell的游标选项,也许这就是混淆的来源。在

相关问题 更多 >