详解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 strip() 函数和 split() 函数的详解及实例
Feb 03 Python
对python中return和print的一些理解
Aug 18 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Django中使用Celery的教程详解
Aug 24 Python
python实现一个简单的ping工具方法
Jan 31 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
python 通过使用Yolact训练数据集
Apr 06 Python
用Python可视化新冠疫情数据
Jan 18 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
Web程序工作原理详解
2014/12/25 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
js实现随机8位验证码
2020/07/24 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
Python中的pprint折腾记
2015/01/21 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
进修护士自我鉴定
2013/10/14 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
nginx请求限制配置方法
2021/07/09 Servers
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android