MongoDB介绍
产品特点
1)存储数据量大
适合存储数据量比较的数据,不太重要的数据。
适合存储日志信息,评论·······
2)关系数据库需要提前设计,mongodb 不需要提前设计
存储性
单表可以存储pb级别的数据
1024b = 1kb
1024kb = 1mb
1024mb = 1gb
1024gb = 1tb
1024tb = 1pb
mysql 单表一般存储千万级别条数 亿级别就分表了
效率性
数据库的效率就是指它的读写速度。
结构
mysql 创建库 设计表 字段类型 存入数据 row
mongo 直接使用 document
安装及其使用
需要window服务管理,来进行操作管理mongodb数据库的启动和停止
下载MongoDB https://www.mongodb.com/download-center/community
第一步:部署mongodb软件到运行目录
第二步:创建存储mongodb数据文件的路径目录和日志文件路径,主要不要有中文路径
第三步:使用管理员命令行,进行mongodb的服务安装
使用管理员命令行,进行入到mongodb运行目录bin目录下
可以通过查看mongod.exe -h 查看相关参数帮助
cmd > mongod.exe --dbpath=F:\MongoDB\db\ --logpath=F:\MongoDB\log.txt --install
第四步:安装之后,查看服务管理里,有没有出现服务,并且可以正常启动
问题处理:如果安装之后,服务启动不起来,多半参数指定不对
解决方案:卸载服务,重新安装对应正确的参数
如果服务可以正常使用,卸载的时候,主要要停止服务
cmd > mongod.exe --remove
简单操作
使用bin目录下的mongo.exe 连接mongodb数据库
cmd > mongo.exe
查看帮助命令
无状态使用
mongo可以直接use库名称,就自动创建一个数据库
简单计算
添加数据
bson 类json结构
db.集合(数据表).insert({name:’张三’,age:25});
普通数据添加
db.goods.insert({name:'huawei01',price:1000,weight:135,number:35})
多维数据对象添加
db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})
数组信息添加
db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'beijing',city:'beijing'},color:['blank','white','red']})
查询数据
笼统方式查询
语法:db.goods.find(); 数据全部显示出来 db.goods.findOne(); 显示查询结果的第一条
条件限制查询
db.goods.find({name:'huawei01'}) //查询name为huawei01的数据
范围条件查询
//关键字:$gt $lt $gte $lte
//mysql关键字: > < >= <=
db.goods.find({price:{'$gt':1005}}) //price 大于1005的数据
多个条件查询
db.goods.find({price:{'$gt':1000},weight:{'$gte':180}}) //price大于1000 重量大于等于180的
多维字段查询
db.表.find({'key.name':值})
db.goods.find({'area.city':'zhuhai'})
数组条件查询
db.表.find({字段(数组):val}) //数组元素值 有val即可(存在一个元素)
db.goods.find({color:'red'})
db.表.find({字段(数组):{‘$all’:[v1,v2]}}) 数组元素值 存在v1和v2 即可(v1,v2顺序不做要求)(存在多个元素)
db.goods.find({color:{'$all':['pink','red']}})
限制查询字段
很多时候,数据库里的字段不需要全部取出。按照需要取出数据字段,限制查询的字段。
默认mongodb里,有一个主键_id,全球唯一性标识,方便备份和恢复操作。想要用之前习惯使用的id,不要删除和修改这个_id,另外加一个字段。
db.表.find({条件},{字段:1/0,字段:1/0}) 显示为1 不显示为0
db.goods.find({name:'xiaomi6'},{price:1,name:1})
_id除外,可以随意设置0或者1
$or查询
条件满足其中一个即可显示出来
db.goods.find({'$or':[{price:2000},{number:{'$lt':100}}]})
修改数据
语法:
db.集合.update()
有$set的修改
db.表.update({条件},{‘$set’:{字段:值,字段:值......}})
db.goods.update({name:'xiaomi6'},{'$set':{name:'xiaomi666',number:50}})
没有$set的修改
db.表.update({条件},{字段:值,字段:值......})
db.goods.update({name:'xiaomi'},{name:'xiaomi10'})
删除数据
删除记录
db.表.remove(条件)
db.goods.remove({name:'xiaomi10'})
删除字段
db.表.update({条件},{‘$unset’:{字段:1/字段:0}})
db.goods.update({name:'huawei01'},{'$unset':{weight:0}})