1. MongoDB: 是NOSQL的一种, 特长是分布式用的,用于处理爬虫数据
2. mongoDB 与 redis
mongoDB是最像关系型的非关系型数据,更加适用于大数据,redis则更倾向于,并发较小,数据较小,性能更高
3. MongoDB的默认端口: 27017
4. 重要概念
MongoDB mysql
数据库 数据库
集合 表
文档(类似字典) 记录
键值对 字段
#注意: MongoDB中是区分大小写, mysql是不区分大小写
#注意: MongoDB中表示id的是"_id"
5. 用户管理
权限是数据区来做区分的
想要操作admin 那就在admin下创建用户
想要操作adb 那就在adb下创建用户
6. 创建用户
use admin #使用admin 数据库
db.createUser({
"user":"root",
"pwd":"123",
roles:[{"role":"root","db":"admin"}]
})
####在admin 数据库内创建用户 , 用户root, 密码为123 权限是root权限, 操作admin库
key都是固定的不能随便写每一个key都有特殊含义
其中{"role": "root"} role固定的key root是角色的名字 有可选范围如root readWrite read等等...
7.如何设置Mongdb的用户认证功能:
找到配置文件中(bin下) 修改mongod.cfg 增加一个配置项:
security:
authorization: enabled
# 注意缩进
8. 登录方式: mongo -u "root" -p "123"
或者: mongo 直接进行游客模式 use 切换到与用户所在的数据库 db.auth("用户名","密码") 返回1为成功 0为失败
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
use 数据库名字 创建数据库 例如: use mydb #创建数据库mydb 因为里面,没有数据,所以不显示出来 db.dropDatabase() 删除数据库 show dbs 查看所有数据库, #因为mydb 没有添加数据所以不会显示出来 use 切换数据库,#切换数据 如果不存在会自动创建 新建的数据库是查看不到的 因为里面没有数据
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
集合的操作(表的操作): use mydb dd.tt #创建表,但是没数据,还是不显示 show tables #查看所有集合 db.info.drop() #删除集合 记录文档的操作: db.user.insert({"_id":1}) #插入一条数据 db.user.insertMany([ {"_id": 3, "name": "张三封"}, {"_id": 4, "name": "鹌鹑蛋"} ]) ##插入多条数据 也可以这样: user1={ "_id":1, "name":"alex", "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'weifang' } } db.user.insert(user1) #插入变量: user1 = {"_id":10,"name":"王五"} db.user.insert(user1) #如果id已经存在则覆盖, 没有添加 db.user.save( {"_id":10,"name":"鹌鹑蛋2"}) #因为已经存在,所以,王五变为鹌鹑蛋2 db.user.find() #查询 db.user.find().pretty() #查询结果格式化 #语句查询: db.user.find() # 查询所有 == select *from user db.user.find({"name":"张三封"}) == select *from user where name = "张三封" #查询名字为张三封 全部显示出来 db.user.find({"name":"张三封","_id":3}) == select *from user where name = "张三封 and _id = 3" #查询名字为张三封 且_id 为3 全部显示出来 #比较运算符 > < != >= <= gt lt ne gte lte db.user.find({"name":{"$ne":"张三封"}}) db.user.find({"_id":{"$gt":3}}) #注意:字段名在外层 条件在里层 逻辑运算符 and or not db.user.find({"$or":[ {"name":"张三丰"}, {"name":"鹌鹑蛋"} ]}) ============================================================================= 取反 db.user.find({"_id":{"$not":{"$mod":[2,1]}}}) # id 在 [1,2]内的 db.user.find({ "_id":{"$in":[1,2]} }) # id 不在 [1,2]内的 db.user.find({ "_id":{"$nin":[1,2]} }) # 查询指定字段 db.user.find({},{"name":1,"_id":0}) 1表示展示 0不展示 _id默认为1 其他默认为0 db.student.find({"hobbies":{"$all":["movie","muisc"]}}) db.student.find({"hobbies.1":"girl"}) #按照索引进行查询,1是数组的索引 # 查看所有人的 第一个和第二个爱好 db.student.find({},{"hobbies":{"$slice":[0,1]}}) # $slice [1,1] 表示的是从第1个开始取1个 db.student.find({},{"hobbies":{"$slice":[1,1]}})