python 的pymongo db.collection.find()出来是个游标,怎么才能转成数据?
PHP中文网
PHP中文网 2017-04-18 09:59:10
[Python讨论组]

find出来直接print是<pymongo.cursor.Cursor object at 0x040DC8D0>

网上看到的都是遍历,如果我想把find出来的结果保存到一个列表就不能保存了,所以请问大神要怎么弄?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
巴扎黑
>>> db.test.find()
<pymongo.cursor.Cursor object at 0x108dabf50>
>>>
>>> list(db.test.find())
[{'_id': ObjectId('5839b12eee86fb71849a0905'), 'name': 'Tom'},
 {'_id': ObjectId('5839b134ee86fb71849a0906'), 'name': 'Jim'}]
ringa_lee

在pymongo中使用find是得到1个游标对象的,如果你想实现MongoDB shell中find操作,例如:

> db.test.find()
{ "_id" : ObjectId("5838531e0f3577fc9178b834"), "name" : "zhangsan" }

在pymongo中需要使用find_one方法而不是find方法:

>>> print db.test.find_one()
{u'_id': ObjectId('5838531e0f3577fc9178b834'), u'name': u'zhangsan'}

>>> print db.test.find()
<pymongo.cursor.Cursor at 0x7f4ac789e450>
>>> result = []
>>> for x in db.test.find():
          result.append(x)
>>> print(result)
>>> [{u'_id': ObjectId('5838531e0f3577fc9178b834'), u'name': u'zhangsan'},...]

这样就可以得到多条数据了。

怪我咯

我知道得就是遍历游标一个一个append到列表中去,难道还有其他办法?求大神指导

PHP中文网

其实很简单的,上面的答案都是遍历,在python中

array = list(posts.find())#posts是我的collection
type(array)
#list

补充一下

#list to datafram
import pandas as pd
df = pd.DataFrame(array)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号