Python pymongo模块用法示例
本文实例讲述了Python pymongo模块用法。分享给大家供大家参考,具体如下:
MongoDB优点
MongoDB是一个为当代web应用而生的noSQL数据库,它有如下优点:
1、文档型存储。可以把关系型数据库的表理解为一个电子表格,列表示字段,每行的记录其实是按照列的字段顺序排列的值得元组。而存储在MongoDB中的文档被存储为键-值对的形式,值却可以是任意类型且可以嵌套。之前在用关系型数据库的时候,我们把产品信息打散到不同的表中,要通过关系表或者使用join拼接成复杂的SQL语句的方式才能获得需要的数据。现在我们可以更多地把产品信息放在一起,也不需要提前预定产品信息的模式。多好。
2、使用高效的二进制BSON作为数据存储,BSON是一个类JSON的格式,选择BSON可以提供更快的遍历速度,提供比JSON更多地内置数据类型。
3、自带高可用及分区的解决方案。
4、基于文档的富查询语言。MongoDB支持动态查询,支持非常多的查询方式,并且可以对文档中的属性建立索引。
5、内置聚合工具。可以通过MapReduce等方式进行复杂的统计和并行计算。
6、MongoDB在3.0 之后增加了高性能,可伸缩,支持压缩文档级锁的数据存储引擎(WiredTiger),官方的性能测试显示,使用新的存储引擎后带来4~7倍的性能提升哦。
安装MongoDB的python 驱动:
pip install pymongo
下面是一些操作例子:
# coding=utf-8 import random import pymongo client = pymongo.MongoClient('mongodb://localhost:27017/') client.drop_database('test') # 保证之前没有数据, 删除名为test的数据库 db = client.test # 使用test这个数据库 coll = db.coll # 使用coll这个集合 # 插入单条 rs = coll.insert_one({'a': 1, 'b': 2}) object_id = rs.inserted_id print rs.inserted_id # 打印插入的对象id # 插入多条 rs = coll.insert_many([{'a': random.randint(1, 10), 'b': 10} for _ in range(10)]) print rs.inserted_ids # 打印插入的对象id列表 # 查询单条(符合的第一条) print coll.find_one({'a': 1, 'b': 2}) # 集合当前全部文档数 print coll.count() cursor = coll.find({'a': {'$lte': 1}}) # 查询结果是一个游标 print cursor.count() # 符合查询的文档数 for r in cursor: print r, r['b'] # 打印符合查询的文档内容, 以及其中b键的值 # 注意, 这个循环只能进行一次. 如果想再获得需要重新find或者使用list(cursor)把结果存起来 # 对查询结果排序 print list(coll.find({'a': {'$lte': 1}}).sort([('b', -1)])) # -1也可以表示为pymongo.DESCENDING # 对查询结果可以限制返回文档数, 控制跳过的结果数 print coll.find({'b': {'$gt': 1}}).limit(1).skip(1).next() # next相当于find_one # 找到后更新, 下面例子第一个参数是过滤条件, 第二个参数是要更新的操作(设置b为3, a自增长1) # upsert为True表示找不到会创建一个,也就是get_or_create rs = coll.find_one_and_update({'a': 1, 'b': 2}, {'$set': {'b': 3}, '$inc': {'a': 1}}, upsert=False) print rs # 返回更新前的文档 # 同样的还有find_one_and_replace和find_one_and_delete print list(coll.find({'a': 2, 'b': 3})) # 上述文档已经被更新为这个文档 coll.find_one_and_update({'a': 1, 'b': 2}, {'$set': {'b': 3}, '$inc': {'a': 1}}, upsert=True) # 虽然没有符合{'a': 1, 'b': 2}的记录,但是会新建一个 print coll.find({'a': 2, 'b': 3}).count() # 发现现在有2条文档记录了 # 删除单个文档 coll.delete_one({'a': 2, 'b': 3}) # 一次性删除多个文档 rs = coll.delete_many({'a': 2, 'b': 3}) # 如果没有符合的条目也不会提示, 但是可以通过rs.deleted_count获得删除的数量 print rs.deleted_count
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
- 暴力遍历还没注册的双拼域名
- JRuby——Java和Ruby的强强联合
- Golang语言关于零值的定义
- 使用Yeoman创建ASP.NET Core项目
- Golang语言捕获panic异常并转化为error
- 在Windows下安装TensorFlow
- JavaFX——(第一篇:介绍篇)
- 自编码器是什么?有什么用?这里有一份入门指南(附代码)
- UWP基础教程 - {x:DeferLoadStrategy}
- UWP基础教程 - 重启应用
- html5打开摄像头
- UWP基础教程 - App多语言支持
- Golang实现Fibonacii的几种算法
- 【译】使用 dotnet watch 开发 ASP.NET Core 应用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- GWAS全基因组关联分析流程(BWA+samtools+gatk+Plink+Admixture+Tassel)
- linux中ipset命令的使用方法详解
- VirtualBox 未指定要bridged的网络界面的解决办法
- Vim中宏命令的使用实例详解
- 在CentOS搭建Git服务器的详细步骤
- CentOS使用EPEL源的方法步骤
- VirtualBox 错误:This kernel requires the following features not present on the CPU
- keepalived实现nginx高可用
- LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS
- Centos7安装配置NFS服务和挂载教程(推荐)
- 轻松搞定VIM高亮NGINX配置文件的方法
- CentOS7 下安装telnet服务的实现方法
- Linux内核启动参数详解
- CentOS6.3添加nginx系统服务的实例详解
- Linux中在防火墙中开启80端口方法示例