一 安装
pip install pymongo
二 python连接mongodb数据库的前提
- 确保pymongo安装完毕
- mongodb数据库的服务器端(mongod)必须处于启动状态
三 连接mongodb
连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,
第二个参数为端口port,端口如果不传默认是27017。
- 方式一
client=pymongo.MongoClient(host='127.0.0.1',port=27017)
- 方式二
lient = pymongo.MongoClient('mongodb://localhost:27017/')
四 指定数据库
- 特点:找不到数据库,自动创建数据库
- 代码:
db=client.test #数据库名为test
或者 db = client['test']
五 指定集合
- 特点:找不到集合,自动创建集合
- 代码:
collection=db.student
或者collection = db['students']
六 插入数据
单条数据的插入
student = {
'id': '',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
- 方式一:result=collection.insert(student)
- 方式二:result=collection.insert_one(student) #推荐使用
多条数据的插入
student2 = {
'_id': '',
'name': 'Jordan',
'age': 30,
'gender': 'male'
} student3 = {
'_id': '',
'name': 'Mike',
'age': 20,
'gender': 'male'
}
- 方式一:result=collection.insert([student2,student3])
- 方式二:result=collection.insert_many([student2,student3])#推荐使用
注意:官方推荐使用insert_one()和insert_many()方法将插入单条和多条记录分开。
七 查询
#根据系统生成的id查询
from bson.objectid import ObjectId result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
print(result)
1 单条查询
results = collection.find_one({'age': 20})
2 查询结果返回多条
result_list=collection.find({'age':20})
print(result_list)
for result in result_list:
print(result['_id'])
2.2模糊查询
'''
符号含义示例
$lt小于{'age': {'$lt': 20}}
$gt大于{'age': {'$gt': 20}}
$lte小于等于{'age': {'$lte': 20}}
$gte大于等于{'age': {'$gte': 20}}
$ne不等于{'age': {'$ne': 20}}
$in在范围内{'age': {'$in': [20, 23]}}
$nin不在范围内{'age': {'$nin': [20, 23]}}
'''
# 如果要查询年龄大于20的数据,则写法如下: results = collection.find({'age': {'$gt': 20}})
2.3 正则查询
"""
符号含义示例示例含义
$regex匹配正则{'name': {'$regex': '^M.*'}}name以M开头
$exists属性是否存在{'name': {'$exists': True}}name属性存在
$type类型判断{'age': {'$type': 'int'}}age的类型为int
$mod数字模操作{'age': {'$mod': [5, 0]}}年龄模5余0
$text文本查询{'$text': {'$search': 'Mike'}}text类型的属性中包含Mike字符串
$where高级条件查询{'$where': 'obj.fans_count == obj.follows_count'}自身粉丝数等于关注数
"""
# 另外还可以进行正则匹配查询,例如查询名字以M开头的学生数据,示例如下: results = collection.find({'name': {'$regex': '^M.*'}})
3 其他
count = collection.find().count() #统计查询返回的数量
results = collection.find().sort([('age',pymongo.ASCENDING),('name', pymongo.ASCENDING)]) #多条件排序
results = collection.find().sort('name', pymongo.ASCENDING).skip(2) #分页提取数据
八 更新文档
condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
#在这里我们将name为Kevin的数据的年龄进行更新,首先指定查询条件,然后将数据查询出来,修改年龄,
#之后调用update方法将原条件和修改后的数据传入,即可完成数据的更新。
condition = {'age': {'$gt': 20}}
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count) # 在这里我们指定查询条件为年龄大于20,然后更新条件为{'$inc': {'age': 1}},执行之后会讲第一条符合条件的
数据年龄加1。
#更新多条数据
condition = {'age': {'$gt': 20}}
result = collection.update_many(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)
九 删除文档
# 另外依然存在两个新的推荐方法,delete_one()和delete_many()方法,示例如下: result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)
文章推荐
https://www.cnblogs.com/pyedu/p/10313148.html
pymongo 一篇文章搞定的更多相关文章
-
一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
-
一篇文章搞定Git——Git代码管理及使用规范
一篇文章搞定Git--Git代码管理及使用规范 https://blog.csdn.net/weixin_42092278/article/details/90448721
-
一篇文章搞定JS类型转换
啥要说这个东西?一道面试题就给我去说它的动机.题如下: var bool = new Boolean(false); if (bool) { alert('true'); } else { alert ...
-
一篇文章搞定 Nginx 反向代理与负载均衡
代理 要想弄明白反向代理,首先要知道啥是正向代理,要搞懂正向代理只需要知道啥是代理即可.代理其实就是一个中介,在不同事物或同一事物内部起到居间联系作用的环节.比如买票黄牛,房屋中介等等. 在互联网中代 ...
-
一篇文章搞定Selenium元素定位/封装/数据驱动
小伙伴都知道,自动化最重的,又最"难"(因为实战中会碰到定位的各种坑)那就是定位元素.如果不熟练掌握定位,那只怕你比功能测式的小伙伴下班还会要晚!扎心了吧! Selenium常用定 ...
-
一篇文章搞定css3 3d效果
css3 3d学习心得 卡片反转 魔方 banner图 首先我们要学习好css3 3d一定要有一定的立体感 通过这个图片应该清楚的了解到了x轴 y轴 z轴是什么概念了. 首先先给大家看一个小例子: 卡 ...
-
Python正则表达式很难?一篇文章搞定他,不是我吹!
1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必须使用进行转义 2 字符类 1. 包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时 ...
-
一篇文章搞定SpringMVC参数绑定
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
-
一篇文章搞定mongodb
一 安装 1 安装目录下新建文件夹data,etc,logs #在bin文件下启动cmd,指定数据存储的路径mongod --dbpath D:\MongoDB\data\db 2 etc文件夹中新建 ...
随机推荐
-
python flask (一)
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World ...
-
javaweb学习记录(1)
Java基础学习笔录 1.运行java程序,出现bad version number in.class file 编译器()的版本号高于运行环境(jre)的版本号,可以降低编译器版本号,也可以通过提升 ...
-
《IT蓝豹》挑战独立开发项目能力
做了5年的android开发,今天没事写写刚入行不久的时候第一次独立开发项目的心得体会, 当时我刚工作8个月,由于公司运营不善倒闭了,在2011年3月份我开始准备跳槽, 看了一周andro ...
-
Python时间和日期学习
#coding=utf-8 __author__ = 'Administrator' #日期和时间模块学习 """ Python程序能用很多方式处理日期和时间,转换日期格 ...
-
从FCN到DeepLab
图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类. 图像语义分割,从FCN把深度学习引入这个任务,一个通用的框架事:前端使用FCN全卷积网络输出粗糙的label map,后端使用CR ...
-
Python3 hasattr()、getattr()、setattr()、delattr()函数
hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,name) 参数: object--对象 name--字符串,属性名 返回值: 如果对象 ...
-
Codeforces 802L Send the Fool Further! (hard)
Description 题面 题目大意:求从根节点出发,每次随机走一个相邻的点,问走到任意一个叶子节点经过的路径长度的期望(走到就停止) Solution 树上高斯消元,复杂度是 \(O(n)\) 的 ...
-
Scrapy爬虫框架第四讲(Linux环境)
下面我们来学习Selector的具体使用:(参考文档:http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/selectors.html) Selecto ...
-
SynchronousQueue------TransferQueue源码分析
不像ArrayBlockingQueue.LinkedBlockingDeque之类的阻塞队列依赖AQS实现并发操作,SynchronousQueue直接使用CAS实现线程的安全访问.由于源码中充斥着 ...
-
linux 学习笔记 管道 pipe ls cp mv
如ls |less -MN 含义把ls结果输出到less [ls] ==管道== [more] ls命令 ls -a 展示隐藏的文件 <隐藏文件一般以. 开始> ls -t 以时间戳排 ...