引入

在这里我们来看一下Python3下MongoDB的存储操作,在本节开始之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python的PyMongo库。

MongoDB 数据库安装与介绍可以查看之前的 MongoDB 教程。

安装

pip3 install pymongo

使用pymongo

一,连接MongoClient

使用pymongo的第一步首先是连接Client来使用服务:

from pymongo import MongoClient
Client = MongoClient()

二,获取数据库(database)

在MongoDB中一个实例能够支持多个独立的数据库,你可以用点取属性的方式来获取数据库,或者通过字典的方式获取:

db = Client.test_database
db = Client['test_database']

(注:'test'可以换成你想要用的名字,比如"python_database")

三,获取Collection

Collection是存储在MongoDB中的一组文件,同获取database一样,你可以用点取属性的方式或者字典的方法获取:

collection = db.test_collection
collection = db['test_collection']

四,存储数据

在MongoDB中,数据是以BSON的类型存储的。见下面的post:

import datetime
post = ['type':'BSON', 'date':datetime.datetime.utcnow()]

了解完MongoDB的数据格式后,你可以通过以下的方式插入数据(其中.inserted_id将返回ObjectId对象):

document1 = {'x':1}
document2 = {'x':2}
posts = db.posts #你也可以不这样做,每次通过db.posts调用
post_1 = posts.insert_one(document1).inserted_id
post_2 = posts.insert_one(document2).inserted_id

每个插入的数据对应一个ObjectId,可直接查看:

>>>post_1
ObjectId(...)
>>>post_2
ObjectId(...)

你还可以用insert_many()插入多个文档:

new_document = [{'x':3}, {'x':4}]
result = posts.insert_many(new_document) >>>result.inserted_ids
[ObjectId(...),ObjectId(...)]

五,从MongoDB中调用数据

>>>posts.find_one()
['x':'']

但用find_one()的方法只能获取一个数据,如果数据库中存在多个数据时,它返回的是第一个的值。你也可以通过ObjectId来请求数据,效果和上面是一样的。如果你想打印出全部数据,可以通过迭代的方式获取:

>>>for data in posts.find():
>>> data
>>>
{u'x':1,
u'x':2,
u'x':3,
u'x':4}

你也可以加入限制性因素来获取特定的数据:

>>>for post in posts.find({'x':1}):
>>> post
>>>
{u'x':1}

查找条件中也可以用正则匹配来匹配calue。

六,更新数据

在pymongo中可以用update_one()来更新数据:

>>>posts.update_one({'x':4},{'$set':{'x':3}})

其中传入的第一个参数是你想要更新的数据,第二个是你想要更新的最新数据。其中$set部分是必要元素,如果没有会报出错误。除了$set外还有很多其它的比如$inc,对应着不同的功能,在此先不赘述。

上面只是更新匹配到的第一个数据,同样地,也可以用update_many()一次更新多个值。

七,删除数据

同上,可以用delete_one()和delete_many()方法来删除数据,括号中是筛选条件:

>>>posts.delete_one({'x':3})
>>>posts.delete_one({'x':2})

八,计数

如果想知道collection中有多少文档,可以用.count()请求来获取符合条件的文档。

>>>posts.count()
4
>>>posts.find({'x':1})
1

完!!!

python之pymongo的更多相关文章

  1. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  2. 7.mongo python 库 pymongo的安装

    1.Python 中如果想要和 MongoDB 进行交互就需要借助于 PyMongo 库,在CMD中使用命令即可[注意此处是pip3,pip无法安装]: pip3 install pymongo 2. ...

  3. Python 使用pymongo操作mongodb库

    Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报  分类: - - - Python(10)  版权声明:本文为博主原创文 ...

  4. python中级---->pymongo存储json数据

    这里面我们介绍一下python中操作mangodb的第三方库pymongo的使用,以及简单的使用requests库作爬虫.人情冷暖正如花开花谢,不如将这种现象,想成一种必然的季节. pymongo的安 ...

  5. 【Python】pymongo使用

    官方文档:http://api.mongodb.com/python/current/index.html MongoReplicaSetClient:http://api.mongodb.com/p ...

  6. python使用pymongo访问MongoDB的基本操作,以及CSV文件导出

    1. 环境. Python:3.6.1 Python IDE:pycharm 系统:win7 2. 简单示例 import pymongo # mongodb服务的地址和端口号mongo_url = ...

  7. MongoDB的Python客户端PyMongo(转)

    原文:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样的好玩 ...

  8. python操作pymongo

    import pymongo from bson import ObjectId mongo_client = pymongo.MongoClient(host="127.0.0.1&quo ...

  9. 【python】pymongo查找某一时间段的数据

    python中实现: 下面代码就是查找2016-09-26 00:00:00 ~ 2016-09-27 00:00:00 时间段的数据 from datetime import datetimefor ...

随机推荐

  1. Jetty 开发指南:Jetty 内嵌开发

    Jetty的口号是“不要在Jetty中部署你的应用程序,在你的应用程序中部署Jetty!” 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可 ...

  2. Dynamics 365使用Execute Multiple Request删除系统作业实体记录

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复295或者20190112可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  3. layui topbar图标(即返回顶部)未显示的解决方法

    在自己搭建纯html模板的时候,遇到了topbar无法显示的问题,搜了社区都没啥有用的解决方法,于是引用了util.js的源文件,发现用dom变量未获取到正确的scrollTop值,经过反复测试,把这 ...

  4. BGP:我们不生产路由,而是路由的搬运工

    1.BGP协议自身不能生产路由,它主要通过配置来将本地路由进行发布或者引入其他路由协议产生的路由. 有两种方法, 方法一.在BGP视图下,通过network命令将本地路由发布到BGP路由表中, 通过本 ...

  5. Android 为TV端助力

    记录两次事情: 第一个给view添加动画效果,需要保证view是可以获取焦点的 第二个给listview,GridView设置选择器 listselector时,要保证他的子item无背景,否则选择器 ...

  6. 微信小程序(二)登录授权实现

    相对于上一节,这一节主要是动态获取数据,主要是对登陆信息的接收,以及页面获取授权按钮的相对相应(未授权时,显示,授权后不显示) 关键在于状态值的判断,以及对页面的不同响应(m-->v) wxml ...

  7. OV摄像头图像采集基础知识总结

    目前FPGA用于图像采集 传输 处理 显示应用越来越多,主要原因是图像处理领域的火热以及FPGA强大的并行处理能力.本文以OV7725为例,对摄像头使用方面的基础知识做个小的总结,为后续做个铺垫. 下 ...

  8. 【重新发布,代码开源】FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片

    原创博客,转载请注明出处:[重新发布,代码开源]FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片 - 没落骑士 - 博客园 https://www.cnblogs.com/m ...

  9. RHEL6 删除软RAID

    停止使用RAID: 1.umount raid组上的硬盘的所用的分区 若使用raid组创建vg,需要删除或去激活VG 2.停止raid服务 mdadm -S /dev/md0 3.清除MBR # md ...

  10. June. 22 2018, Week 25th. Friday

    Where words fail, music speaks. 言语无法表达时,音乐就会响起. From Hans Christian Andersen. Where words fail, musi ...