草庐IT

pymongo_kill_cursors_thread

全部标签

python - 为什么 PyMongo 脚本至少需要 500 毫秒才能执行?

这个简单的脚本test.py总是需要超过500毫秒来执行:importpymongopymongo.MongoClient(host='127.0.0.1')像这样:lanroth@ubuntu:~$timepython3./test.pyreal0m0.608suser0m0.096ssys0m0.012s我已经在运行Ubunutu16.04、Mint19、Docker容器中的Mongo或裸机的不同Linux机器上尝试过此操作。脚本总是需要超过500毫秒,通常在580毫秒到650毫秒之间。延迟似乎发生在脚本退出时,所以我猜测是在清理连接期间,某些东西在500毫秒后超时。执行以下she

python - pymongo 需要超过 24 小时才能循环遍历 20 万条记录

我在数据库中有两个集合page和pagearchive我正在尝试清理。我注意到在pagearchive中创建了新文档而不是按预期向嵌入式文档添加值。所以基本上这个脚本所做的是遍历page中的每个文档。然后在pagearchive中找到该文档的所有副本并将我想要的数据移动到一个文档中并删除了额外的内容。问题是pagearchive中只有200K个文档根据我在底部打印的计数变量,迭代1000条记录需要30分钟到60分钟以上的时间。这非常慢。我见过的重复文档中最大的计数是88。但在大多数情况下,当我在pageArchive中查询时在uu,我看到1-2个重复文档。mongodb在具有16GBR

python - pymongo+update 抛出 $pull

我有一个mongo文档:{"_id":0,"name":"Vasya","fav":[{"type":"t1","weight":1.4163},{"type":"t2","weight":11.7772},{"type":"t2","weight":6.4615},{"type":"homework","score":35.8742}]}要删除数组“fav”中的最低元素,我使用以下Python代码:db.people.update({"fav":{"type":"t2","weight":lowest}},{"$pull":{"fav"{"type":"t2","weight":lo

perl - 如何捕获 Perl MongoDB::Cursor 的 'recv timed out' 错误?

我有一个Perl程序通过cron发出这些消息:recvtimedout(60000ms)at/usr/local/lib/perl/5.8.8/MongoDB/Cursor.pmline251.recvtimedout(60000ms)at/usr/local/lib/perl/5.8.8/MongoDB/Cursor.pmline251.recvtimedout(60000ms)at/usr/local/lib/perl/5.8.8/MongoDB/Cursor.pmline251.我已采取以下步骤来缓解:$collection->find(...)周围的evalblock$curs

python - (PyMongo) - 函数 find_one_and_update() 的参数

我在下面列出的代码行中收到一个通用的Django错误。我很难理解有关如何为此设置参数的pymongo文档function.我在想我写错了。我有一组请求文件。每个请求文档都有一个“请求”键和一个值(subreddit_name+“F”)。这就是我想查询和查找文档的方式。每个文档还有一个带有值(pdone变量)的“pdone”键。这是我要更改的文档中的键值。发生错误的代码行:self.collection_requests.find_one_and_update({'request':self.subreddit_name+"F"},{'pdone':pdone},return_docum

python - 如何在不更改 pymongo 中的 id 的情况下更新整个对象?

我正在尝试更新存储在MongoDB中的记录/对象的所有属性,现在我正在尝试这样做。已删除对象,但保留被删除对象的ID。使用我删除的相同ID创建一个新对象。是否正确?或者他们使用pymongo做什么?mongo_object={_id:123,prop_key_1:some_value,//...manypresentprop_key_n:some_value,}defdelete(record):doc=get_db().reviews.delete_many({"id":record["_id"]})print(doc.deleted_count)#allkeyvaluesarech

python - pymongo - 消息长度大于服务器最大消息大小

fordocincollection.find({'is_timeline_valid':True}):行给出了消息长度错误。如何在没有错误的情况下获取所有集合?我知道find().limit()但我不知道如何使用它。代码:fromopenpyxlimportload_workbookimportpymongoimportoswb=load_workbook('concilia.xlsx')ws=wb.activeclient=pymongo.MongoClient('...')db=client['...']collection=db['...']r=2fordocincollect

python - 如何使用 pymongo 手动创建 DBRef?

我想手动创建一个DBRef,以便我可以向它添加一个额外的字段。但是,当我尝试传递以下内容时:{'$ref':'projects','$id':'1029412409721','project_name':'MyProject'}Pymongo引发错误:pymongo.errors.InvalidName:key'$id'mustnotstartwith'$'似乎pymongo为特殊键保留了$,这让我想知道是否有可能做我想做的事情? 最佳答案 可能不想像那样手动创建它们,因为DBRefs中的键需要排序。我们可以添加一个选项来创建带有自

python - pymongo 无法使用多线程

下面的代码不管是在python2.6还是python3.2中都不行。测试代码:importpymongoclassA(Thread):def__init__(self):Thread.__init__(self)self.conn=pymongo.Connection('localhost',30000)self.mongo=self.conn.puppetself.mongo.authenticate('test','123')defrun(self):printself.mongo.href.find_one()A().start()异常信息:OperationFailure:da

python - InvalidDocument : Cannot encode object: <pymongo. 游标。游标对象位于

我试图将一个文档objectID作为属性(链接)存储到另一个文档中,但mongo一直给我这个错误。这行的语法有什么问题?foruinself.request.db.lyrics.find():u['forSong']=self.request.db.song.find({},{'_id':1})self.request.db.lyrics.save(u) 最佳答案 问题是find方法的结果是一个游标,而不是一个对象列表u['forSong']=self.request.db.song.find({},{'_id':1})是光标,不是