MongoDB
1.认识MongoDB
MongoDB基于分布式文件存储的开源数据库系统 .
1)文档结构的存储方式,能够更便捷的获取数据
2)海量数据下,性能优越
3)3.高效存储二进制大对象 (如照片和视频)
RDBMS(关系型数据库管理系统) |
mongdb |
Database(数据库) | Database(数据库) |
Table(表) | Collection(集合) |
Record(记录) | Document(文档) |
mongodb和熟悉的数据库的对应关系
进入与退出
2.库、集合操作
- 库级语句
show dbs 显示所有数据库(空数据库不显示)
use db_name 切换/创建数据库
db 查看所在库(默认是test数据库)
dp.dropDatanase() 删除库
- 集合语句
show collections 查看当前数据库的集合
db.createCollection(name) 创建集合
db.集合名称.drop() 删除集合
3.文档的增删改查
- 插入数据(集合不存在则创建)
db.集合名称.insert(document) #每一条数据,就是一个document,即就是一条json(json是一种标准数据格式,以后会讲)
例:db.student.insert({name:‘sakura',age:18})
可以插入多条
db.student.insert([ {name:'sakura', sex:'男', age:18},
{name:'jay', sex:'男', age:18},
{name:'luoli', sex:'女', age:18}, ])
- 查询数据
db.集合名称.find()
db.集合名称.find().pretty() //格式化查询
- 高级查询
and条件 {$and:[{expression1}, {expression1}, ...] }
or条件 {$or:[{expression1}, {expression1}, ...] }
and,or联合使用
条件操作符
$ne #不等于
$gt # 大于
$lt # 小于
$gte # 大于等于
$lte # 小于等于
db.集合名称.find({name:key}).pretty() #where name=key
db.集合名称.find({name:{$ne:key}}).pretty() #wherer name != key
db.student.find({
$and:[
{age:18},
{name:{$ne:'sakura'}}
]
}) # where age =18 and name != 'sakura'
db.student.find({
$or:[
{$and:[{sex:'男'},{name:'sakura'}]},
{$and:[{age:{$gt:18}},{sex:'女'}]}
]
}) # where (sex = '男' and name ='sakura ') or ( age > 18 and sex = '女')
这一块中括号大括号小括号非常麻烦,建议先在本地文本中分隔清楚再复制到命令行
- 更新数据
全文档更新: db.student.update({age:18},{age:20}) //只修改一条,将age=18的第一条数据覆盖为age:20
指定属性更新,通过操作符$set
db.student.update({name:'jay'},{$set:{age:20, sex:'boy' }})
更新多条: { multi: ture } (前提只能指定字段更新)
db.student.update( {age:20},{$set:{sex:'女'}},{ multi:true} )
- 删除数据
删除满足条件的所有数据
db.student.remove({sex:'女'})
删除集合所有文档
db.student.remove({})
只是删除一条
db.student.remove({sex:'女'},{justOne:true })
4.mongodb配置
在Ubuntu系统中默认配置文件地址: /etc/mongodb.conf
dbpath # 数据存放位置
logpath # 日志存放位置
bind 127.0.0.1 # 指定IP进行监听
auth = True #权限认证,用户管理
若打开auth=True,则开启权限认证按以下步骤
- user admin #进入admin数据库
- 创建管理员用户,用来管理用户,可以通过这个角色来创建、删除用户,用户只具有管理用户和角色的权限。
db.createUser({
user:'juha',
pwd:'123456',
roles:[{role:"userAdminAnyDatabase", db:"admin"}]
}) #role:指定用户的角色,db指定库
- sudo service mongdb restart #重启mongdb,输入密码
- #此时进入除admin之外的数据库进行任何操作都会提示没有权限
use admin
db.auth('juha', '123456' ) #权限认证,输入帐号密码即可
- db.createCollection('student') #创建一个库
use student #进入 - 给该库添加用户
db.createUser({
user:'test',
pwd:'test',
roles:[{
role:'readWrite',
db:'student'
}]
}) - 操作
show users #查看当前库下的用户
db.dropUser('username') #删除某个用户
db.dropAllusers() #删除当前库的所有用户
db.getUsers() #查询所有用户