python操作三大数据库(二)--------mongodb

MongoDB教程
本文详细介绍了MongoDB数据库的基本操作,包括数据库、集合的管理,数据的增删查改,以及索引、聚合等高级功能,最后通过实例展示了如何使用Python与MongoDB进行交互。

mysql是常用的关系型数据库,而非关系型数据库常用的就是mongodb和redis了
所谓nosql,并不是没有sql,而是not only sql

本文主要讲解mongodb的基本用法,数据操作。最后会用一个实例来讲解如何和python进行交互

数据库操作

1.查看当前数据库名称
db

2.查看所有数据库
show dbs

3.切换数据库(如果不存在,则指向数据库,知道插入数据或创建集合时数据库才被创建)
use xx

默认数据库为test

4.删除数据库
db.dropDatabase()

集合操作

1.创建
db.createCollection(“stu”)
参数capped:默认为false,表示不设置上限
参数size:当capped为true时,需要指定此参数,表示上限大小。当文档达到上限时,会将之前的数据覆盖,单位为字节
db.createCollection(“stu”,{capped::true,size:10})

2.删除
db.xxx.drop()
3.查看
show collections

数据操作

mongodb常见数据类型

ObjectID文档id
String 字符串
Boolean 布尔
Integer 整数
Double 浮点
Arrays 数组或列表
Object 用于嵌入式文档,即一个值为一个文档
Null 存储null值
Timestamp 时间戳
Date 存储当前日期或时间的UNIX时间格式

1.插入
db.集合名.insert(document)

在这里插入图片描述
2.查询
db.集合名.find()
db.集合名.findOne() 只返回一个数据
db.集合名.find().pretty() 将结果格式化

3.更新
db.集合名.update(
,
,
{multi:} #multi:true时 可以修改多条
)

改变结构
在这里插入图片描述
db.stu.update({},{name:’wushuai1’})
在这里插入图片描述

KaTeX parse error: Expected '}', got 'EOF' at end of input: …stu.update({},{set:{name:’wushuai1’}})

在这里插入图片描述
4.删除
db.集合名.remove(
,
{
justOne:
}
)
在这里插入图片描述

运算符

1,比较运算符
$lt 小于 $gt 大于
$lte 小于等于 $gte 大于等于
KaTeX parse error: Expected '}', got 'EOF' at end of input: …stu.find({age:{gte:18}}) 查询年龄大于等于18
2,逻辑运算符
逻辑与 , db.stu.find({age:18,name:’wu’})
逻辑或 ordb.stu.find(or db.stu.find(ordb.stu.find(or:[{age:18},{name:’wu’}])
3,范围运算符
in,in,in,nin
db.stu.find({age:{$in:[18,20]}}) 查询年龄18-20的

自定义查询

db.stu.find({$where:
function(){return this.age>20}
})

Limit 读取指定数量文档

db.stu.find().limit(x)

skip跳过制定数量文档

db.stu.find().skip(x)

投影

需要显示的字段设为1,不需要显示的设为0
db.stu.find({},{name:1,age:0})

排序sort

1为升序排列,-1为降序排列
db.stu.find().sort({age:1,gender:-1})

统计个数count

db.stu.find().count()

消除重复distinct

db.stu.find().distinct(‘去重字段’,{条件})

聚合aggregate

用于计算数据,类似于sum(),avg()
db.stu.aggregate([{管道:{表达式}}])
表达式:’$列名’
$$ROOT 得到整个文档

例:
group
1.统计男女人数
db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:’gender’,counter:{KaTeX parse error: Expected 'EOF', got '}' at position 6: sum:1}̲}} ]) #按gender分…group:{_id:’null’,counter:{$sum:1}}}
])

match
3.查询年龄大于20的学生
db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: match:{age:{gt:20}}}, #过滤之后,再分组统计人数
{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:’gender’,counter:{sum:1}}
])

Project
4.查询学生的姓名年龄
db.stu.aggregate([
{$project:{_id:0,name:1,age:1}}
])

db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: match:{age:{gt:20}}},
{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:’gender’,counter:{sum:1}},
{$project:{_id:0,counter:1}}
])

sort
5.按年龄升序排列
db.stu.aggregate([
{$sort:{age:1}}
])

unwind
6.db.stu.aggregate([
{unwind:’unwind:’unwind:size’} #size=[1,3,4,5]
])
将数组拆分

db.stu.aggregate([
{KaTeX parse error: Expected '}', got 'EOF' at end of input: unwind: {path:’size’,preserveNullAndEmptyArrays:true} #true防止数据丢失
} ])

索引
查询性能分析
db.t1.find({name:‘test24’}).explain(‘executionStats’)

建立唯一索引 1升序 -1降序
db.t1.ensureIndex({“name”:1},{“unique”:true})
联合索引
db.t1.ensureIndex({name:1,age:1})
查看索引
db.t1.getIndexes()

与python交互

#coding=utf-8
from pymongo import *

client = MongoClient('mongodb://stu:123@localhost:27017/stu')  #获得客户端,建立连接

db = client.stu#切换数据库

stu = db.stu#获取集合

#stu.insert_one({'name':'xxx'})  #插入

#stu.update_one({'name':'xxx'},{'$set':{'name':'xxx的小LL'}})  #修改

#stu.delete_one({'name':'li'}) #删除
#stu.delete_many() #删除


# cursor = stu.find({'age':{'$lt':20}}) #查找
# for i in cursor:
#     print(i['name'])

cursor = stu.find().sort('age',DESCENDING) # 排序DESCENDING  ASCENDING
for i in cursor:
    print(i)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值