1.MongoDB
01.MongoDB介绍
数据库–>集合–>文档
- NoSQL中一种
- 对比redis为key-value存储类型,MongoDB是文档型数据库
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,字段值可以包含其他文档,数组及文档数组。
- MongoDB 文档类似于 JSON 对象,是BSON(二进制Binary JSON)
02.特点
它的特点是面向文档、高性能、高可用性、高扩展性、对SQL注入攻击免疫。
主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。
03.linux-MongoDB登录
MongoDB端口:27017
登录:
mongo # 进入交互模式
退出:
exit
2.库和集合操作
01.库操作语句
显示所有库:show dbs
查看当前所在数据库:db # 默认会自动进入test库
切换/创建数据库:use student # 不存在就创建,在创建集合后可查看
删除数据库:db.dropDatabase() # 退出后会彻底删除
02.集合操作语句
创建集合:db.createCollection(‘集合名’)
显示所有集合:show collections
删除集合:db.集合名.drop()
默认创建:进入数据库之后,可以不用创建集合,当插入一个不存在的集合时,会自动创建集合
例子:db.moran.insert({‘name’:‘mr’,‘age’:18}) # moran集合不存在,就自动创建集合moran,并插入一条文档
3.文档操作
01.插入
插入一条:db.集合名.insert(document)
例如:db.student.insert({name:‘budong’,age:18})
设置id:db.stu.insert({’_id’:5,‘name’:‘test3’,‘age’:17,‘sex’:‘wumen’})
插入多条:db.student.insert([{name:‘kongshan’,age:18},{name:‘yefeng’:age:19}])
插入一条:insertOne()
插入多条:insertMany()
02.查找
无条件查询:db.stu.find()
格式化无条件查询:db.stu.find().pretty()
固定条件查询:db.stu.find({age:18})
操作符描述解释$gt大于greater than$gte大于等于gt equal$lt小于less than$lte小于等于lt equal$ne不等于not equal$eq等于equal
例子:
db.stu.find({age:{$gt:18}})
db.stu.find({name:{$ne:moran}})
and 和 or:
and: 直接用逗号分割即可
or:$or[{key1:value1},{key2:value2}]
db.stu.find({name:‘budong’,$or[{age:18},{sex:‘nan’}]})
03.修改
全文档替换:db.stu.update({‘name’:‘test3’},{‘age’:26})
修改第一条数据:db.stu.update({‘name’:‘test1’},{$set:{‘age’:18}})
修改多条数据:db.stu.update({‘age’:18},{$set:{‘age’:19,‘sex’:‘nan’}},{multi:true})
04.删除
默认删除所有符合的文档:db.stu.remove({‘name’:‘moran’})
删除一条数据:db.stu.remove({‘name’:‘moran’},{justOne:true})
删除所有数据:db.stu.remove({})
新方法:
db.stu.deleteOne({‘name’:‘kongsan’})
db.stu.deleteMany({‘name’:‘kongsan’})
remove()方法并不会真正释放空间,需要继续执行:db.repairDatabase()来回收磁盘空间
4.Python与MongoDB交互
01.安装模块
pip install pymongo -i https://pypi.douban.com/simple
02.连接数据库
import pymongo
client = pymongo.MongoClient()
db = client['test'] # 指定数据库名
collection = db['student'] # 指定集合名
03.增删改查
# 添加:insert_one insert_many
collection.insert_one({'name':'kongsan','age':12})
# 查找 find find_one
collection.find() # 查找一个
# 改 update_one update_many
collection.update_one({'name':'kongsan'},{'$set':{'age':20}})
# 删除 delete_one
collection.delete_one({'name':'kongsan'})