课件:Mongodb
Mongodb 非关系型数据库 但是他是最像关系型
binary Json格式
数据里面有数据,再有数据 mysql 就比较难做到
分布式储存 计算机节点上 集群
Mangodb数据库 文档数据 json 格式
最小的单元是文档
缺点:比较耗内存
mongo # 进入mongo
exit # 退出
显示所有数据库
show dbs
前3个是配置信息
# 进入数据库,创建 都是用use
如果没有库他会默认一个 test
use python3
# 进入了才能删除
db.dropDatabase() 必须大写
# 查看当前数据库
db
# mango 只有存在集合(数据)的数据库 才是有用的,才有价值,空数据库没有存在的价值
# 创建集合
db.createCollection('students') 必须大写 当然 也可以不用创集合 你在给集合加内容时就会自动创建
# 显示当前数据库的集合
show collections
# 删除集合
db.students.drop()
知识点一:MongoDB的常用操作
文档操作
想给集合插入数据
db.students.insert({'name':'xiaoming','age':18})
db.students.insert({'name':'haoyi','age':22})
db.students.insert({'name':'julia','age':18})
db.students.insert({'name':'jack','age':12})
db.students.insert({'name':'haoyi','age':12})
db.students.insert({'name':'wangchao','age':30})
db.students.insert({'name':'jack','age':16})
db.students.insert({'name':'jack','age':12})
WriteResult({ "nInserted" : 1 }) 插入一条数据
# 查看全部的数据
db.students.find()
# 唯一的Object id
# 创建多个就是写到列表中就OK了
db.students.insert([{'name':'haoyi1','age':13},{'name':'haoyi2','age':14},{'name':'haoyi2','age':16}])
批量插入的结果是 3条
#这个id可以自己指定
db.students.insert({name:'qi',_id:1,age:18,sex:'b'})
# 查询
db.students.find()
db.students.find().pretty() # 格式化显示 /ˈprɪtɪ/漂亮的
# 查看满足条件的的数据
db.students.find({'name':'haoyi4'}) # 就能查出来
# 格式化显示
db.students.find({'name':'haoyi4'}).pretty()
----------------------------------------------------------------
条件
db.students.find('age':{'$gte':18}) # 错误的
db.students.find({age:{$gte:18}}) 大于18的
and条件
or条件
$and
db.students.find({$and:[{'name':'haoyi'},{'age':12}]})
# name=haoyi and age=12
db.students.find({$or:[{'name':'haoyi'},{'age':12}]}).pretty()
# name=haoyi or age=12
db.students.find({$or:[{'name':'haoyi'},{'age':100}]}).pretty()
and和 or混用
db.students.find({$or:[{},{}]})
db.students.find({$or:[{$and:[{},{}]},{$and:[{},{}]}]})
db.students.find({$or:[{$and:[{"name":"haoyi"},{"age":"12"}]},{$and:[{"name":"jack"},{"age":16}]}]})
({$or:[{$and:[{}, {}]},{$and:[{}, {age:{}}]}]})
$gt:大于
$lt:小于
$gte:大于或等于
$lte:小于或等于
$ne:不等于
# 修改数据
# 修改一条数据
两个字典 第一个是条件 只会更新找到的第一条数据
db.students.update({'name':'haoyi1'},{'age':100})
把前面所有的东西全部覆盖掉,替换掉
db.student.update({'name':'julia'},{'age':100})
现在我不想这样做,我要修改我指定的数据
db.students.update({'name':'julia'},{$set:{'age':'1000'}})
# 他只改找到的第一条数据
db.students.update({"age":100},{$set:{"name":'baobao'}})
db.students.update({"age":'100'},{$set:{"name":'baobao'}}) # 没反应
$set:有就修改,没有就创建
更新集合满足所有条件的文档:
db.students.update({'name':'juila'},{$set:{'name':'pig'}},{multi:true}) # /'mʌlti/ mu ti 多
删除文档(数据)
# 删除所有的文档
db.students.remove({})
# 删除满足条件的文档
db.students.remove({'name':'haoyi'})
# 删除满足条件第一条的文档
db.students.remove({'name':'pig'},{justOne:true})
知识点二:Python操作MongoDB
import pymongo # 导入模块
# 1.建立连接
collection.insert_one({'name':''})
sudo ufw allow 27017 更新
-----------------------------------------------------------
import pymongo
# systemctl start mongodb.service 开启服务
# 建立连接
client = pymongo.MongoClient('127.0.0.1',27017) # 可以省略
# 指定数据库
db = client['python3']
# 指定集合
my_col = db['students']
# 数据操作 (怎删改查)
# 增
# my_col.insert({'name':'haoyi','age':18})
# 增多
# my_col.insert_many([
# {'name':'haoyi3','age':18},
# {'name':'haoyi1','age':19},
# {'name':'haoyi2','age':20}
# ])
# 查
# res = my_col.find_one()
# print(res)
# res = my_col.find()
# print(res)
# for i in res:
# print(i)
# 改
# my_col.update_one({'name':'haoyi1'},{'$set':{'age':100}})
# 查看
# res = my_col.find_one({'name':'haoyi1'})
# print(res)
# 删 删除一个
res = my_col.delete_one({'name':'haoyi'})
print(res)