mongodb数据库(上)

''
1.简述
mongodb是文档型的数据库 即储存的数据格式称作文档,底层是用js来写的,所以是符合js语法的 大{}格式
面向文档(分布式文件储存)的NOSQL型数据库,mongodb同时操作内存和硬盘,内存缓存然后储存到硬盘中
mongodb三要素
数据库:有不同的数据库 database
集合: mysql的表 就是mongodb中的集合 collection
文档: 实际数据储存成文档document,文档就是数据 是Bson格式:二进制的json      mysql中的字段是mongodb中的 域 field
'''




'''
2.配置操作
mac:brew install mongodb
安装在/usr/local/Cellar/mongodb中
第一次启动服务器 : mongod 
会报错没有缓存文件夹 sudo mkdir -p /data/db 创建mongodb使用的默认文件夹
启动服务器应该使用 sudo mongod    提示:waiting for connections on port 27017  --fork后台运行必须指定日志打印文件
启动客户端 mongo
后台运行服务器通过客户端关闭: use admin    db.shutdownServer()
'''




'''
3.权限设置
robomongo是可视化界面的连接mongodb的客户端


开启权限认证方式
启动: sudo mongod --auth   在配置文件中添加auth = true,然后加载配置文件启动
管理员来创建用户,先创建管理员 use admin使用这张表
db.createUser({user:'用户名',pwd:'密码',roles:['root']}) 创建了管理员用户    其他权限read,readWrite
                      指定数据库和权限 roles:[{role:'权限',db:'数据库'}]
查看已有用户的权限 show users
认证身份登录 use 数据库名    db.auth('用户名','密码')  返回 1  对哪个数据库由权限就进到哪个数据库中认证
'''




'''
4.基本操作
数据库
db              查看当前使用的数据库
show dbs        查看所有数据库
use  数据库名     切换数据库        注意切换数据库不一定成功,只有在对数据库中的集合进行操作,才判别在这个数据库中
db.dropDatabase() 删除




集合操作
show collections  查看当前数据库的所有集合
db.createCollection('name') 创建集合        都是小驼峰命名的方法
db.collection.drop()  删除集合


固定集合:储存空间有限,最新的数据会把最旧的数据覆盖     插入速度快,储存日志信息,不断覆盖
db.createCollection('集合名字',{capped:true, size:n})  创建固定集合,size单位是字节.最小256
db.集合名字.isCapped()  判断是否是固定集合
db.runCommand({'convertToCapped':集合名,size:n}) 普通集合转成固定集合,固定无法转普通
'''




'''
5.数据类型
ObjectID: 主键 一个字符串 自动生成
string  字符串
Boolean  true/false 必须小写,js格式
interger  整型
Double    ???
Arrays    数组,即列表
Object    文档
null      空
Date      时间

'''

'''
6.文档操作(增删改查)
查:
db.集合名.find(查询条件)  查询
db.colname.find({key:'value'})   js格式中值的位置必须是有''的,不能是未定义的变量
增:
db.集合名.insert(插入数据) 插入单条文档
db.集合名.insert(文档列表) 插入多条文档
db.colname.insert([{},{},{}])
改:
db.集合名.update(查询条件,更新后的数据)  全部更新
db.colname.update({key:'value'},{ 更新后的数据 })


db.集合名.update(查询条件,{$set:{}}) 局部更新,有就更新没有就插入
db.colname.update({key:'value'},{$set:{class:1}})  原本文档中有class就更新,没有就插入


db.集合名.update(查询条件,{$set:{}},{multi:true}) 局部更新多条文档  
多个文档都局部更新,只有在有$set的时候可以使用multi的多条更新,而全部的多条更新不使用它   multi就是个坑啊


db.集合名.update({},{更新后的数据},{multi:true})  没有查询条件的更新


db.集合名.save(查询条件,更新后的数据)   存在就更新不存在就插入,只能用_id作为查询条件,坑啊     
db.集合名.update(查询条件,更新后的数据,{upsert:true})  上边是坑,所以用这个方法
删:
db.集合名.remove(查询条件,{justOne:true})  指定删除
db.集合名.remove({})  全部删除
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值