详解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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python 实现12306登录功能实例代码
Feb 09 Python
Python快速查找list中相同部分的方法
Jun 27 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
python实现智能语音天气预报
Dec 02 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python操作gitlab API过程解析
Dec 27 Python
Python基础之变量基本用法与进阶详解
Jan 03 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获取post中的json数据的实现方法
2011/06/08 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
jQuery事件详解
2017/02/23 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
JS回调函数深入理解
2019/10/16 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
心理健康课教学反思
2014/02/13 职场文书
会计员岗位职责
2014/03/15 职场文书
安全协议书范本
2014/04/21 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python