草庐IT

python - pymongo.errors.CursorNotFound : cursor id '…' not found at server

我正在尝试使用pymongo将大约1M的文档从mongodb读取到csv文件。我的代码如下所示:importcsvfrompymongoimportMongoClientfromdatetimeimportdatetimefrombsonimportjson_utilfromtempfileimportNamedTemporaryFileclient=MongoClient('mongodb://login:pass@server:port')db=client.some_mongo_databasecollection=db.some_mongo_collectionfromDate

arrays - 如何将字段(具有 K-V 对的对象数组)转换为仅具有值的数组数组?

我在MongoDB中有一个集合,其中有一个名为"geometry"的字段,其纬度和经度如下:{"abc":"xyz","geometry":[{"lat":45.0,"lng":25.0},{"lat":46.0,"lng":26.0}]}我想将字段geometry转换成这样的内容,以符合GeoJSON格式:{"abc":"xyz","geometry":{"type":"LineString","coordinates":[[25.0,45.0],[26.0,46.0]]}}该操作本质上涉及获取具有两个K/V对的对象数组,并仅选择值并将它们存储为数组数组(顺序相反-因此“lng”的值

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

Mongodb:由对等方重置连接

我有一个在Ubuntu机器上运行的Mongo服务器,我正在尝试使用通常的语法通过pymongo连接到它:frompymongoimportConnectionc=Connection('db.example.com',27017)这在最新型号的Intelmac(OS10.6)上工作得很好。但是,旧版G5塔(10.5)上的相同代码会抛出此错误:pymongo.errors.AutoReconnect:[Errno54]Connectionresetbypeer服务器上的mongo输出报告:connectionacceptedfromoldmac.example:57681#3badrec

python - 为什么 MongoDB 在 Celery 连接上无法识别我的用户?

我在DotCloud托管上有一个带有MongoDB数据库的Python/Flaskwebapp。我想使用MongoDB服务作为Celery队列在Python服务上设置Celery。Celery启动并找到我的celeryconfig.py文件,其中包含:BROKER_BACKEND="mongodb"BROKER_HOST="data.myapp.dotcloud.com"BROKER_PORT=8567BROKER_USER='myuser'BROKER_PASSWORD='mypass'CELERY_IMPORTS=('myapp.worker',)CELERY_IGNORE_RES

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

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

python - MongoDB - 在更新中使用 $in 和 $pull 只会影响单个记录,而不是 $in 中指定的所有记录

好吧,如果不发布相关文档规范的示例,这可能有点难以想象,但我不确定它在这种情况下是否相关。本质上,我在这里尝试做的是$pull从记录ID列表中提取文档的特定部分。这是一个示例(我们使用PyMongo与数据库交互):distinct_poster_ids=self._db.activities.find({"_id":activity_id}).distinct("feed.poster_id")ifdistinct_poster_ids:document={"$pull":{"feed":{"_id":activity_id,"object":"activity"}}}self._db

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

django -/accounts/login/id 处的 TypeError 必须是 (str, unicode, ObjectId) 的实例,而不是 <type 'int' >

这是我的第一个mongodb示例代码我正在尝试将我的django与mongodb连接起来。我成功完成了注册部分,但是当我尝试登录时显示错误页面。TypeErrorat/accounts/login/idmustbeaninstanceof(str,unicode,ObjectId),nottype'int'我正在使用django用户身份验证,这是我的网址url(r'^accounts/login/','django.contrib.auth.views.login'),下面是我的完整回溯,TypeErrorat/admin/profile/idmustbeaninstanceof(st

mongodb - 遍历 MongoDB 中一个字段中的不同项

我在MongoDB中有一个非常大的集合(约700万项),主要由具有三个字段的文档组成。我希望能够以一种方便的方式遍历其中一个字段的所有唯一值。目前,我只查询那个字段,然后通过迭代游标来处理返回的结果以获得唯一性。这行得通,但速度很慢,我怀疑一定有更好的方法。我知道mongo有db.collection.distinct()函数,但这受到最大BSON大小(16MB)的限制,我的数据集超过了这个值。是否有任何方法可以迭代类似于db.collection.distinct()的东西,但使用游标或其他一些方法,因此记录大小限制没有那么多一个问题?我认为map/reduce功能可能适合这种事情,