详解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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
Python实现基本线性数据结构
Aug 22 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
python3将视频流保存为本地视频文件
Jun 20 Python
详解Python3定时器任务代码
Sep 23 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
python和go语言的区别是什么
Jul 20 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
Python 中 Shutil 模块详情
Nov 11 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简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
制作特殊字的脚本
2006/06/26 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
详解JavaScript 作用域
2020/07/14 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python解决走迷宫问题算法示例
2018/07/27 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python字符串对象实现原理详解
2019/07/01 Python
Python 线程池用法简单示例
2019/10/02 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
生日主持词
2014/03/20 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
2014年化验室工作总结
2014/11/21 职场文书
《去年的树》教学反思
2016/02/18 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS