非关系型数据库(NoSQL),采用文档存储模式
文档不需要遵循固定的表结构,每个文档都可以有不同的字段
用来存储和检索非结构化数据
MongoDB文档型数据库 类似json,不支持表连接
数据库
集合collection 相当于表
文档 相当于行
字段 相当于列
show dbs;
只显示非空数据库
use 数据库名; 没有就创建,创建完就切换
如果有直接切换
db.dropDatabase() 先切换到数据库
集合不需要创建,使用时会自动创建
show collections:
db.createCollection(‘集合名字’);
db.集合名.drop()
find 找到所有
finOne 只找到一个
例子:db.teacher.findOne({"name":'t1'})
insert 可以插一个或者多个
insertOne 可以插一个
insertMany 可以插多个
例子: db.teacher.insertMany([{"name","t5",age:24},{"name":"t6",age:25}])
deleteOne 删除一个
deleteMany 删除多个
例子:db.teacher.deleteOne({"name":"张三","age":21})
update 修改一个
updateOne 修改一个
updateMany 修改多个
例子:db.teacher.updateOne({"name":"张三"},{$set:{"name":"张张张"}})
db.teacher.find({"age":{$gt:20}})
eq 等于
gt 大于
lt 小于
大于等于 $gte
小于等于 $lte
ne 不等于
and直接写
db.teacher.find( {"age":20 ,"name":"t1"} )
或者 db.teacher.find({"$or": [{"age":20}, {"age":25}]})
$in db.teacher.find({"age": {$in:[21,23,24]}})
$nin
斜杠(/)将模式括起来
find({"name": /^t/ }) 名字以t开头
find({"name":/.\d/}) 第二个是数字
find({"name": /3$/ }) 以3结尾
find({$where: function(){return this.age>20}})
db.teacher.find().sort()
升序 1
降序 -1
例子:db.teacher.find().sort( {"age":-1} )
db.teacher.find().count()
db.teacher.count({"age":21})
limit 限制每页返回的文档数量
skip(n) 从n开始
db.teacher.find().limit(n) 显示个数
# 第2页,每页显示 2 条数据
db.teacher.find().skip(2).limit(2)
键表示要包含或排除的字段,值为 1 表示包含该字段,值为 0 表示排除该字段。
find({},{列名:1,列名2:0})
db.teacher.find({ },{"name":1,"age":1})
例子:sales 按照 "category" 字段对销售额进行分组并计算每个分类的总销售额
db.sales.aggregate([
{ $group: { _id: "$category", totalSales: { $sum: "$amount" } } }
])
对数据处理,将上一阶段处理结果转交给下一个聚合
aggregate $match过滤
db.sales.aggregate([{$match:{"category":"X"}}])
$group分组
$project(投影)
$sort(排序)
安装模块 pip install pymongo
使用流程:
导入模块 import pymongo
创建连接 client=pymongo.MongoClient()
找到数据库 db=client.getDatabase("")
找到集合 collection=db.getCollection("")
增删改查
关闭连接 client.close()