详解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分析git log日志示例
Feb 27 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
python中cPickle类使用方法详解
Aug 27 Python
python图像和办公文档处理总结
May 28 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
执行Python程序时模块报错问题
Mar 26 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Python实现我的世界小游戏源代码
Mar 02 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中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
浅谈Vue.js
2017/03/02 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
为Python的web框架编写前端模版的教程
2015/04/30 Python
详解Python import方法引入模块的实例
2017/08/02 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
美国在线家装零售商:Build.com
2016/09/02 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
担保书怎么写 ?
2019/04/22 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Java 超详细讲解hashCode方法
2022/04/07 Java/Android