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中的错误:无法识别的管道阶段名称:'光标'
我该如何解决这个问题
答案 0 :(得分:0)
OperationFailure中的错误:无法识别的管道阶段名称:'光标'
方法
PyMongo中的aggregate()指定第一个参数是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
已弃用,将在PyMongo v4.0 +中删除。根据您的示例代码段,您可能希望返回可以迭代的cursor。
{'光标':{' batchSize':0}}
另外值得注意的是,这是aggregation pipeline通过mongo shell的光标选项,也许是混淆来自的地方。