目录
1.1基础入门
1.1.1应用场景
- 易扩展性
- 对数据之间事务的支持比较弱
- Mongodb是一个内存数据库,数据都存放再内存中
- 非关系型数据库是一种文档型的数据库,即可以存放xml、json、bson类型的数据,数据结构由键值对组成
- 存储方式是虚拟内存和持久化。1】持久化的方式:所有操作的数据通过过map的方式映射到内存的某个区域内。2】当物理内存够用的时候:redis>mongodb>mysql。3】当物理内存不够用的时候:redis和mongodb都会使用虚拟内存,实际上如果redis要开始虚拟内存,很明显要么加内存条,要么就换数据库。
1.1.2环境搭建
启动:
- 启动客户端:mongo
- 查看帮助:mongo --help
- 退出:exit
- 启动:net start mongodb【linux下启动:sudo service mongodb start】
- 停止:net stop mongodb
- 重启:net restart mongodb
- 配置文件位置:/etc/mongod.conf
- 默认端口:27017
- 日志位置:/var/log/mongodb/mongod.log
更改为服务:
- 在安装路径下创建data文件夹和log文件夹,在log文件夹中创建文件mongod.log,在安装路径下创建配置文件mongod.cfg,
dbpath=D:\mongodb\path\data\db logpath=D:\mongodb\path\log\mongod.log
启动cmd,使用命令:mongod --config "D:\mongodb\path\mongod.cfg" --install 。如此服务已经生成了。下面我们启动服务:
远程连接:
- 更改配置文件:vim /etc/mongodb.conf
- 注释bindip或者修改为0.0.0.0
- 保存退出
- 远程登录:mongo ip:port
1.1.3MySQL和MongoDB
SQL | MongoDB |
database | database |
table-表 | collection集合 |
row-行 | document-文档 |
column-数据字段 | field 域 |
index-索引 | index-索引 |
table joins 表关联 | MongoDB--不支持 |
primary key 主键 | primary key 自动将_id设置问主键索引 |
1.2基本操作
1.2.1常用命令
- 查看当前数据库:db
- 查看所有数据库:show dbs
- 切换数据库:use 数据库名
- 查看某个数据库中表的数据:db.表名.find()
- 删除当前数据库:db.dropDataBase()
1.2.2数据类型
- Interger:整型
- Double:浮点型
- String:有效的utf-8
- Boolean:存储布尔值
- Null:存储Null值
- Timestamp:时间戳
- Data:存储当前日期或者时间unix时间格式
- object ID:文档ID
- Array:数组或者列表类型
1.2.3集合操作
1.2.3.1创建集合
- 自动创建集合:在向不存在的集合中加入数据时会自动创建出来
- 手动创建集合:固定集合,不可以删除
db.createCollection(name,option); db.createCollection("stu",{capped:true,size:10,max:xxx,autoIndexId:xxx})
参数capped=True表示设置上限,参数size表示大小,参数max表示存储最大容量,autoIndexId表示Id
1.2.3.2查看集合
- show 集合名
1.2.3.3删除集合
- db.集合名.drop()
1.2.4注意点
- 创建日期:new Date("2017-12.30")
- 每个文档都有一个属性_id,保证每个文档的唯一性
1.3增删改查
1.3.1插入数据
- 不指定ID插入:db.practise.insert({name:"Maryy",gender:1})
- 指定ID插入:db.practise.insert({_id:"201607020101",name:"Maryy",gender:1})
- 一次插入多条:db.practise.insert({_id:"201607020103",name:"杰克",gender:1},{_id:"2016070201
02",name:"Tom",gender:0})或者使用insertMany([{},{},{}])
1.3.2查找数据
- 查找所有数据:db.practise.find()
- 查找指定条件的数据:db.practise.find({"gender":1})
1.3.3更新数据
- 更新指定条件的数据: db.practise.update({"gender":0},{$set:{"gender":1}})
1.3.4删除数据
- 删除指定条件数据:db.practise.remove({"name":"marry"})
- 指定多个条件:db.practise.remove("age":{$gt:21,$lt:28})
1.3.5符号
- $lt:小于
- $gt:大于
- $lte:小于等于
- $gte:大于等于