详解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创建系统目录的方法
Mar 11 Python
python显示生日是星期几的方法
May 27 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
python图像处理入门(一)
Apr 04 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
python一些性能分析的技巧
Aug 30 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Python获取指定网段正在使用的IP
Dec 14 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
python中if嵌套命令实例讲解
Feb 25 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/05/14 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
推荐20家国外的脚本下载网站
2011/04/28 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
浅析javascript 定时器
2014/12/23 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python在linux中输出带颜色的文字的方法
2014/06/19 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python制作爬虫抓取美女图
2016/01/20 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
基于Python实现简单学生管理系统
2020/07/24 Python
python开发一款翻译工具
2020/10/10 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
早读迟到检讨书
2014/01/24 职场文书
法律六进活动方案
2014/03/13 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
学习十八大标语
2014/10/09 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
北京天坛导游词
2015/02/12 职场文书
幼儿教师辞职信
2015/02/27 职场文书
医德医风个人总结
2015/02/28 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书