mongodb基础操作

课件: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)
posted @ 2023-08-31 21:38  csh逐梦  阅读(11)  评论(0编辑  收藏  举报