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'})