详解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 返回汉字的汉语拼音
Feb 27 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Pytorch to(device)用法
Jan 08 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
教你用Python matplotlib库制作简单的动画
Jun 11 Python
python实现简易自习室座位预约系统
Jun 30 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
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
详解Python 切片语法
2019/06/10 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
公司门卫岗位职责
2014/03/15 职场文书
小学生暑假生活总结
2015/07/13 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
在Python中如何使用yield
2021/06/07 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL