pymongo的简单使用
pymongo的使用
首先安装:
pip install pymongo
安装好了使用
import pymongo
# 链接mongodb,得到一个mongoclient的客户端对象
client = pymongo.MongoClient()
# 指定数据库
db = client.test
db = client["test"] # 这两种方式都可以指定数据库,如果没有该数据库的话,会自行创建
# 如果了解面向对象的一些魔法(内置)方法的话,大概能够知道client对应的类,肯定重写__getattr__,和__getitem__方法
# 指定集合
collection = db.users
collection = db["users"] # 同样这两种方法都可以指定到集合,不存在会自行创建
知道了数据库和集合,下面就是对文档的操作了
# 接着上面的内容
# 插入文档
result = collection.insert({"name":"zhuchunyu","age":22})
# 返回值就是一个对象,输出效果为ObjectId('5cde10c2e200928c8fa29315')
result = collection.insert([{"name":"zhanghao","age":22},{"name":"dsb","age":22}])
# 上面这行代码是插入多个文档,返回值就是一个list,里面元素就是一个一个的对象
# insert这个方法可以插入多条文档,也可以插入单条文档
# 插入单条文档
result = collection.insert_one({"name":"zhuchunyu","age":22})
result.inserted_id
# 返回值也是一个对象,但是这个对象和上面返回值是不一样的,自己可以type(result)看看
# 插入多条文档
results = collection.insert_many([{"name":"wuyang","age":21},{"name":"yangjingpeng","age":22}])
# 返回值也是一个对象
# 查询文档
# 大概就是两个方法,find(),find_one()
# find()方法,返回值为一个对象
result = collection.find({}) # 将集合里的所有文档都查询出来
result = collection.find({"name":"zhuyu"}) # 查询符合参数一的条件的文档
# 可以通过for循环将文档依次打印出来
for i in result:
print(i)
# find_one(),查询一条文档,返回值就是一个字典,里面就是文档内容
result = collection.find_one({}) # 只返回符合条件的一个文档数据
# 其实它最终还是调用的是find()方法,通过limit拿到一条文档数据
# 这两个方法大概能知道做什么事了,下面继续看方法里的参数,这次是重点
# 不管是find_one()还是find(),他们最终执行的就是dind()这个方法,我们看这个方法的参数就行了
# find()这个方法,最终返回的就是Cursor这个类的对象,最好是先自己看看源码,我们继续看这个类
# 我们主要看这两个参数 filter,和projection
# filter就是我们的查询条件,projection就是指定返回文档的哪些字段数据
# 有这样格式文档数据的集合,文档不止下面这一条,有很多
{
_id: 4,
name: "xi",
age: 34,
type: 2,
status: "D",
favorites: { artist: "Chagall", food: "chocolate" },
finished: [ 5, 11 ],
badges: [ "red", "black" ],
points: [
{ points: 53, bonus: 15 },
{ points: 51, bonus: 15 }
]
}
# 当前这个集合的名字赋值给了collection这个变量
# 查询出name字段为"xi"的所有文档
res = collection.find({"name":"xi"})
# 查询age字段大于20的所有文档数据
res = collection.find({"age":{"$gt":20}})
# 查询status字段为"D",且age字段小于50的所有文档
res = collection.find({"status":"D","age":{"$lt":50}})
# 查询status字段为"D",或者age字段小于50的所有文档
res = collection.find({"$or":[{"status":"D"},{"age":{"$lt":50}}]})
# 查询age字段大于30小于50的文档
res = collection.find({"age": {"$lt": 50, "$gt": 30}})
# 查询finished字段数组有5这个元素的文档
res = collection.find({"finished": 5})
# 查询favorites字段里的文档artist字段为"Chagall"的文档
res = collection.find({"favorites.artist": "Chagall"})
# 查询points字段里的文档字段points为53,并且bonus字段为15的文档
res = collection.find({"points.points": 53, "points.bonus": 15})
# projection就是指定返回文档的哪些字段数据
# 这是第二个参数,传递一个字典,key就是字段名,value就是0或1,0代表不需要,1代表需要
# 比如上面那个例子,我想查询name字段为"xi",且我只需要name,age这两个字段
res = collection.find({"name":"xi"},{"name":1,"age":"1","_id":0})
#注意:find()返回值是Cursor这个类的对象,res可以继续使用该对象里的方法,我们通过print,或者for循环这个对象,只是触发了它里面的一些内置方法。
# 更新文档
# 大概就是update,update_one,update_many
# update(),至少传递两个参数,参数一就是filter(筛选条件),参数二就是更新后的文档
# 比如我有这样的一条文档{"name":"zhuyu","age":22...}
# 我想把这条文档的age字段改为23,其他的字段数据不发生变化
res_dict = collection.find_one({"name":"zhuyu"})
res_dict["age"] = 23
collection.update({"name":"zhuyu"},res_dict)
# 对了,就算根据筛选条件得出的结果有多条,也只会更新其中的一条文档
# update_one,也是至少传递两个参数,具体的参数可以去看源码,他只会将参数二的给的字段的值进行更新,不会像update那样,整条数据都进行更新
# 还是继续上面那个例子:将age字段改为23
collection.update_one({"name":"zhuyu"},{"$set":{"age":23}})
# update_many,更新多条文档
# 删除文档,参数至少一个,就是filter(筛选条件)
# delete_one() 删除一条文档
# delete_many()删除多条文档
pymongo的简单使用的更多相关文章
- MongoDB Python官方驱动 PyMongo 的简单封装
最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...
- python中级---->pymongo存储json数据
这里面我们介绍一下python中操作mangodb的第三方库pymongo的使用,以及简单的使用requests库作爬虫.人情冷暖正如花开花谢,不如将这种现象,想成一种必然的季节. pymongo的安 ...
- python和mongodb简单交互
python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...
- Python操作MongoDB和Redis
1. python对mongo的常见CURD的操作 1.1 mongo简介 mongodb是一个nosql数据库,无结构化.和去中心化. 那为什么要用mongo来存呢? 1. 首先.数据关系复杂,没有 ...
- python_08
一.作业 ''' 主页: 图标地址.下载次数.大小.详情页地址 详情页: 游戏名.好评率.评论数.小编点评.下载地址.简介.网友评论.1-5张截图链接地址. https://www.wandoujia ...
- python学习第八天
解析库之bs4的基本使用方法 ''' pip install beautifulsoup4#安装bs4 pip install lxml#安装lxml ''' html_doc = "&qu ...
- pymongo(看后转载,在原基础上添加了类连接和简单调用)
一.MongoDB 数据库操作 1. 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 # conn = pymongo.Conne ...
- pymongo数据报表脚本
最近打算将平时自己的一些小工具整理整理,由于一直使用python写脚本,而且数据库一直使用MongoDB,所以直接使用pymonogo驱动数据库做一些报表生成的小脚本,此次的脚本主要针对每个月中公司业 ...
- 存储库-MongoDB简单的操作
简介: MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档的数据库,而不是关系型的数据库: 不采用关系型主要是为了可扩展性 2.易扩展性 存储在Mong ...
随机推荐
- Java | 基础归纳 | 静态方法与实例方法的区别
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...
- 3.KPCR
KPCR: CPU控制区(Processor Control Region) 当线程进入0环时, FS:[0]指向KPCR(3环时FS[0]-> TEB)每个CPU都有一个KPCR结构体(一个核 ...
- scrapy框架中Item Pipeline用法
scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...
- [ZPG TEST 114] 括号匹配【树分治 点分治 括号序列】
1. 括号匹配 有一棵树,每个节点上都有一个括号(左括号或者右括号).有多少个有序点对(u, v)从u到v的路径上的节点构成的字符串是一个合法的括号匹配?(我们称这样的点对是合法的) 输 ...
- 安装dubbo的监控中心dubbo-monitor-simple
1.下载dubbo-monitor-simple 2.修改配置指定注册中心地址 进入dubbo-monitor-simple\src\main\resources\conf目录修改 dubbo.pro ...
- [已读]JavaScript高级程序设计(第3版)
从去年开始看,因为太长,总是没有办法一口气把它看完,再加上它与第二版大部分一致,读起来兴致会更缺一点. 与第二版相比,它最大的改变就是增加了很多html5的内容,譬如:Object对象的一些新东西,数 ...
- JS中对数组元素进行增删改移
在js中对数组元素进行增删改移,简单总结了一下方法: 方法 说明 实例 push( ); 在原来数组中的元素最后面添加元素 arr.push("再见58"); unshift( ) ...
- How to detect the presence of the Visual C++ 2010 redistributable package
Question: I have seen your previous blog posts that describe how to detect the presence of the Visua ...
- 从零开始利用vue-cli搭建简单音乐网站(六)
上一篇遗漏了一个简单的效果没写,见下图: 主页面点击热门推荐和更多之后跳转到歌曲列表页面,现在的页面只是简单的把所有歌曲列出来,没有进行排序.实现起来也很简单,在MainPage的两个链接上添加: & ...
- Web开发入门不得不看章
引 如今,各种互联网的Web应用程序层出不穷,那么如何快速入门,成长为一个优秀的Web开发工作者呢? 这个问题不容易回答,几乎所有的培训机构都不能清晰地解答. 所以对于Web开发刚刚入门的菜鸟们,我觉 ...