8 MongoDB介绍
8.1 windows平台下MongoDB安装和环境搭建
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB优点:
- 高可拓展性
- 分布式存储
- 低成本
- 结构灵活
NoSQL(not only sql)优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点:1、没有标准化;2、有限的查询功能(到目前为止);3、最终一致是不直观的程序。
- 下载安装包或者压缩包
- 添加db存储和日志存储文件夹(data,etc/mongo.conf,logs/mongodb.log)
- 添加服务、配置环境变量、启动MongoDB
bin目录下执行可执行cmd:mongod --dbpath c:\MongoDB\data --journal
mongo.conf文件配置:
# 数据库路径
dbpath = G:\Learning\MongoDB\data\
# 日志输出文件路径
logpath = G:\Learning\MongoDB\logs\mongodb.log
# 错误日志采用追加模式,配置这个选项后MongoDB的日志会追加到现有的日志文件,而不是重新创建一个新文件
logappend = true
# 启用日志文件,默认启动
journal = true
# 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet = false
# 端口号 默认27017
port = 27017
# 指定存储引擎(默认先不加此引擎,如果报错了,大家都加进去)针对win7 32位的系统
# storageEngine = mmapv1
# http配置(坑:在3.6版本之后就没有这个参数了)
# httpinterface = true
配置完conf之后bin目录下启动cmd:mongod --config G:\Learning\MongoDB\etc\mongo.conf
坑:http配置:httpinterface = true(在3.6版本之后就没有这个参数了)
将服务加载到windows的service服务下:mongod --config G:\Learning\MongoDB\etc\mongo.conf --install --serviceName "MongoDB" (--serviceName可以不要的)
在这里,我配置了环境变量,然后添加到windows服务里,每当我点击启动不是报“找不到指定文件”就是什么“……100”,搜索了一万种方法也是没能解决,最终我选择卸载重新安装再配置。卸载的时候直接打开我们安装时的msi,他可以帮助我们卸载,它卸载的不完全,所以我们得把文件夹里的内容删掉,再重新安装。最终,我本打算去配置service服务,发现里面已经有MongoDBService了,而且已经启动了,what?什么鬼?然后我赶紧打开网页测试了一下localhost:27017,完全运行正常!
只能继续学习吧!
MongoVue:cmd mongo
- show dbs
- use imoocmall
- db.goods.insert({id:101,name:"mi6",salePrice:2499})
8.2 Linux平台下的搭建
- 下载安装包或者压缩包
- 上传服务器,解压缩
- 添加db存储和日志存储文件夹
- scp ……tgz root@123.57.21.144:/
- tar -zxvf ……tgz(解压)
- mkdir mongodb
- mv …… mongodb(把文件装进)
- 创建data、etc\mongo.conf、logs\mongodb.log
- 配置mongodb.conf
8.3 给MongoDB创建用户
>use admin
>db.createUser({user:"admin",pwd:"admin",roles:["root"]})
>db.auth("admin","admin")
>db.createUser({user:"admin",pwd:"123456",roles:[{role:"dbOwner",db:"test"}]})
>db.createUser({user:"roots",pwd:"666666",roles:[{role:"dbOwner",db:"dumall"}]})
注:在3.0以后免费的MongoVue很多功能就不支持了,所以要用Studio-3T(不是免费的)
- 创建管理员
- 授权认证
- 给使用的数据库添加用户
8.4 MongoDB基本语法
- 数据库对比:
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | | 表连接,MongoDB不支持 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
>show dbs
>use demo
>db.createCollection("user")
>db.users.insert({id:123,name:"hello"})
>show collections
>db.dropDatabase()
>db.user.drop()
>db.user.insert({userId:101,userName:"Jack",userAge:28,class:{name:"imooc",num:10}})
>db.user.update({userName:'Jack'},{$set:{userAge:30}})
>db.user.update({userName:'Jack'},{$set:{'class.name':'imooc-test'}})
>db.user.remove({userName:"jack"})
>db.user.find() 查询所有数据
>db.user.find().pretty() 对查到的数据格式化
>db.user.findOne() 查第一条数据
>db.user.find({userName:'Jack'})
>db.user.find({userAge:{$gt:20}}) (大于:$gt,小于:$lt,小于等于:$lte,大于等于:$gte,不等于:$ne,等于:$eq或者:)
- 插入文档
- 更新文档
- 删除文档
- 查询文档
8.5 表数据设计和插入
export、import