详解Python3操作Mongodb简明易懂教程


Posted in Python onMay 25, 2017

连接数据库

链接数据库需要提供一个地址和接口即可。首先还是要导入包。

from pymongo import MongoClient
conn = MongoClient('localhost',27017)

当然,你可以使用如下写法:

conn = MongoClient('mongodb://localhost:27017/')

创建数据库

mongodb不需要提前创建好数据库,而是直接使用,如果发现没有则自动创建。

db = conn.testdb

上面的语句,会创建一个testdb的数据库。但是,在没有插入数据的时候,该数据库在管理工具里面你是看不到的(不显示)。

插入数据

首先第一步我们先插入一条数据瞧瞧。

单条记录插入

from pymongo import MongoClient
conn = MongoClient('mongodb://localhost:27017/')
db = conn.testdb
db.col.insert({"name":'yanying','province':'江苏','age':25})

注意: 接下来的操作中会忽略掉数据库连接操作,直接写核心代码,请自行补上。

python控制台什么都没有发生,这就是成功的意思。使用管理工具查看数据库记录,的确包含了一条数据。

详解Python3操作Mongodb简明易懂教程

多条记录插入

Mongodb一次也可以插入多条数据

db.col.insert([
 {"name":'yanying','province':'江苏','age':25},
 {"name":'张三','province':'浙江','age':24},
 {"name":'张三1','province':'浙江1','age':25},
 {"name":'张三2','province':'浙江2','age':26},
 {"name":'张三3','province':'浙江3','age':28},
])

查询数据

下面我们将刚刚插入的数据查询出来。

单条查询

我们可以使用find_one()来查询一条记录。

db.col.find_one()

上面的语句可以查询出一条mongodb记录。记录中多出来的_id是Mongodb自动生成的唯一值。

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}

我们再随便插入点儿数据供下面操作使用。(省略几万字)

查询所有

如果我们需要查询出所有的记录,则可以使用db.col.find()但是查出来的是一个结果资源集。

我们可以使用for来列出所有记录。

for item in db.col.find():
 print(item)

这样可以获取所有记录。

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}
{'_id': ObjectId('592550e5d92fac0b8c449f87'), 'name': 'zhangsan', 'province': '北京', 'age': 29}
{'_id': ObjectId('592550f6d92fac3548c20b1a'), 'name': 'lisi', 'province': '上海', 'age': 22}
{'_id': ObjectId('59255118d92fac43dcb1999a'), 'name': '王二麻', 'province': '广东', 'age': 30}

条件查询

只要将查询条件当做参数塞入即可筛选数据。

for item in db.col.find({'name':"yanying"}):
 print(item)

查询结果

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}

当然还可以查询小于某个值的记录

for item in db.col.find({"age":{"$lt":25}}):
 print(item)

或者大于某个值的记录

for item in db.col.find({"age":{"$gt":25}}):
 print(item)

统计查询

上面的代码可以统计出所有的记录数量

db.col.find().count() // 4

或者加点儿条件

db.col.find({"age":{"$gt":25}}).count() //2

根据_id查询记录

_id是mongodb自动生成的id,其类型为ObjectId,想要使用就需要转换类型。

python3中提供了该方法,不过需要导入一个库。

from bson.objectid import ObjectId

这样就可以直接使用_id进行查询啦。

collection.find_one({'_id':ObjectId('592550e5d92fac0b8c449f87')})

结果排序

只要将需要排序的字段放入sort方法即可,Mongodb默认为升序

db.col.find().sort("age")

不过你也可以加一些参数去改变排序的方式。比如倒序,不过要记得先导入pymongo库

import pymongo
db.col.find().sort("UserName",pymongo.DESCENDING)

你还可以让他升序,尽管默认如此

for item in db.col.find().sort('age',pymongo.ASCENDING):
 print(item)

更新数据

更新数据很简单,只需要一个条件和需要更新的数据即可

db.col.update({'_id':ObjectId('59255118d92fac43dcb1999a')},{'$set':{'name':'王二麻33333'}})

结果如下:王二麻变成了王二麻33333

{'_id': ObjectId('59255118d92fac43dcb1999a'), 'name': '王二麻33333', 'province': '广东', 'age': 30}

删除数据

删除数据使用remove()方法,如果方法带条件,则删除指定条件数据,否则删除全部

删除name为王二麻33333的用户。

db.col.remove({'name':'王二麻33333'})

删除全部数据(慎用)

db.col.remove()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之正则表达式
Oct 20 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
Python测试线程应用程序过程解析
Dec 31 Python
Python socket聊天脚本代码实例
Jan 02 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
python实现简单石头剪刀布游戏
Oct 24 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 #Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 #Python
Python win32com 操作Exce的l简单方法(必看)
May 25 #Python
python win32 简单操作方法
May 25 #Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 #Python
Python正则表达式完全指南
May 25 #Python
Tensorflow简单验证码识别应用
May 25 #Python
You might like
mayfish 数据入库验证代码
2010/04/30 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
看了就知道什么是JSON
2007/12/09 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Pytorch之保存读取模型实例
2019/12/30 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
办理信用卡工作证明
2014/01/11 职场文书
校外活动方案
2014/08/28 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
Python数据结构之队列详解
2022/03/21 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
数据设计之权限的实现
2022/08/05 MySQL