详解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中DOM方法的动态性
Apr 11 Python
使用python绘制常用的图表
Aug 27 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
Python中super函数的用法
Nov 17 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
django解决跨域请求的问题详解
Jan 20 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
python实现剪贴板的操作
Jul 01 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
python类参数self使用示例
2014/02/17 Python
Python sys.argv用法实例
2015/05/28 Python
Python常用小技巧总结
2015/06/01 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python银行系统实现源码
2019/10/25 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python列表list操作相关知识小结
2020/01/29 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Python中常用的os操作汇总
2020/11/05 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
关于环保的建议书
2014/05/12 职场文书
党员志愿者活动总结
2014/06/26 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS