详解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中capitalize()与title()的区别详解
Dec 09 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
python入门教程 python入门神图一张
Mar 05 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
Django中提供的6种缓存方式详解
Aug 05 Python
python实现邮件自动发送
Aug 10 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
pycharm运行scrapy过程图解
Nov 22 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
python实现TCP文件传输
Mar 20 Python
Python偏函数实现原理及应用
Nov 20 Python
python 镜像环境搭建总结
Sep 23 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/08/08 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python实现密码强度校验
2020/03/18 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
一名毕业生的自我鉴定
2013/12/04 职场文书
志愿者活动总结
2014/04/28 职场文书
2014年老干部工作总结
2014/11/21 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
《风筝》教学反思
2016/02/23 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript