Python pymongo模块用法示例

作者:开心果汁 时间:2022-05-23 20:00:21 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/u013421629/article/details/79222119

标签:Python,pymongo
0
投稿

猜你喜欢

  • 解决tensorflow 释放图,删除变量问题

    2023-08-10 09:42:47
  • asp error对象基础

    2008-08-04 13:25:00
  • Python Spyder 调出缩进对齐线的操作

    2023-07-17 00:56:04
  • asp三天学好ADO对象之第二天

    2008-10-09 12:49:00
  • 使用MHTML 解决 data URI scheme 的浏览器兼容问题

    2009-05-11 12:30:00
  • Python 添加命令行参数步骤

    2022-10-24 05:15:40
  • 详解Python中for循环的使用

    2023-06-13 13:55:40
  • 基于Go语言实现分金币游戏

    2023-06-22 06:49:28
  • 基于python神经卷积网络的人脸识别

    2023-11-03 17:37:17
  • vscode中配置jupyter的详细步骤(彻底解决Failed to start the Kernel问题)

    2022-06-21 06:56:26
  • face_recognition库在python的安装

    2021-06-16 02:29:27
  • 详解Python中的from..import绝对导入语句

    2022-08-10 10:01:33
  • 基于OpenCV的PHP图像人脸识别技术

    2023-11-23 22:02:54
  • 使用pyqt 实现重复打开多个相同界面

    2021-08-19 12:33:43
  • MSSQL优化之探索MSSQL执行计划(转)

    2011-11-03 17:16:21
  • Oracle 下的开发日积月累

    2009-02-28 11:08:00
  • 交互设计实用指南系列(10)—别让我思考

    2010-03-01 12:50:00
  • 解决Server对象 错误 'ASP 0178 : 80070005'

    2008-02-29 13:45:00
  • python版本五子棋的实现代码

    2021-05-17 06:04:23
  • Python实现Pig Latin小游戏实例代码

    2022-06-27 04:15:36
  • asp之家 网络编程 m.aspxhome.com