MongoDB 数据库
网站运行需要有大量的数据的读取,同时用户也需要把自己的数据存储到服务器,对于海量数据的操作。 就需要有专门的软件配合,这个软件就是数据库。
当前比较流行的数据库,Oracle 甲骨文,SQL server ,这些都是商业数据库。但是,开源数据库 目前更受青睐。一个是 Mysql , 另一个是 MongoDB 。
我们课程中采用 MongoDB 数据库。MongoDB 是非关系型数据库,传统的关系型数据库的 table 表 和 record 记录,在 MongoDB 这里都有对应的替代物。
数据库基本概念
https://www.mongodb.com/ 是 MongoDB 的官网。http://www.mongoing.com/ 是 MongoDB 中文社区。http://www.mongodb.org.cn/ 是 MongoDB 中文网。
- MongoDB:是一个数据库软件,有时候我们简称它叫一个数据库,但是其实一个 MongoDB 运行起来 可以里面同时运行多个数据库
- Database: 数据库。一般做法是,一个项目对应一个数据库。
- Collection: 集合。类似于关系型数据库下的表的概念。
- Document:文档。一个集合中会包含多个文档。文档对应关系型数据库中的 记录 这个概念。
举例子来说,一个项目叫 facebook ,那么我们就建立一个c database 来存储这个项目的所有数据。 可以创建多个集合,比如 users 。一个 users 集合中,可以包含多个文档,每个文档中存储一个 user 的信息(信息可以有多项:email, name, brithday …)。
安装
在 deepin Linux 或者 ubuntu 系统,都是一样的命令
直接运行命令
sudo apt-get install mongodb
这个是安装的深度公司服务器上的 mongodb 。可能版本比较老。
可以按照这里的步骤 安装比较新的版本:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
命令行操作,使用 Mongo Shell
启动 mongodb
mkdir -p data/db
mongod --dbpath=./data/db
这样,mongodb 就启动成功了,启动端口是 27017 。
现在要进行 Mongodb 数据库操作,我们就开启 Mongo Shell
mongo
这样,我们进入 Mongo 的命令行界面。
插入一条数据
可以参考:http://haoqicat.com/react-express-api/2-mongodb 可以参考:http://newming.coding.me/myidoc/html/%E6%95%B0%E6%8D%AE%E5%BA%93/mongodb.html
现在思考一下,一条数据,应该保存成一个什么单位?给出三个选项:数据库,集合,文档?
答案:一个文档。那么要保存一个文档,先要有一个数据库,再创建一个集合,然后集合中 才能插入这个文档。这个是总体思路。
具体操作步骤如下:
第一步,创建一个数据库
$ use digicity
switched to db digicity
下面的输出 switched to db digicity
意思是:已经切换到 digicity 这个数据库里面了。
查看数据库有没有创建成功,可以用
show dbs
暂时,没有保存数据到该数据库,所以,输出中没有 digicity 。
第二步,创建集合
创建集合,集合名称叫 users 。
> db.createCollection('users')
{ "ok" : 1 }
第三步,把一条数据,保存成一条文档( Document )
> db.users.insert({username: 'peter', email: 'peter@peter.com' })
WriteResult({ "nInserted" : 1 })
输出结果 WriteResult({ "nInserted" : 1 })
表述成功写入一条数据。
第四步,列出一个集合中的所有文档:
db.users.find({})
对数据记录进行增删改查
第一步,增。
> db.users.insert({username: 'billie', email: 'billie@billie.com'})
第二步,改。
代码中比较推荐用 save ,不推荐 update。
db.users.update({_id: ObjectId("584b62b830a2a2cbf4c4c3f6")}, {username: "billie66", email:"billie@billie.com"})
update 接口中有两个参考,第一个是查询条件,用来定位要更新的是哪一个文档,后面是更新后的数据。
第三步,查。
db.users.find({})
可以列出所有的 users 集合中的文档。
第四步,删。
删除特定一个文档:
> db.users.remove({_id: ObjectId("584b5dbf30a2a2cbf4c4c3f5")})
WriteResult({ "nRemoved" : 1 })
删除集合中所有文档:
> db.users.remove({})
mongo shell 中的基本操作我们就介绍到这里。但是,我们发现敲命令比较麻烦,所以,可以考虑 使用图形化的界面来操作 MongoDB 。
图形化的操作界面 mongo-express
Mongo-express 是一个用 express 技术开发的,MongoDB 的 GUI (图形界面) 。可以方便美观的 操作 MongoDB 中的数据。
参考:http://haoqicat.com/hand-in-hand-react/4-mongo-express
一般系统上的工具,我们用全局安装就可以
npm install -g mongo-express
mongo-express 装好之后,我们需要通知它,到底要连接到哪个数据库。这个是通过,修改 mongo-express 的配置文件来搞定的。
所以首先第一步,我们先要找到 mongo-express 的配置文件。
$ npm list -g mongo-express
/home/peter/.nvm/versions/node/v7.1.0/lib
找到安装位置后,就可以进入安装文件夹,来修改配置文件了。
cd /home/peter/.nvm/versions/node/v7.1.0/lib
cd node_modules
cd mongo-express
cp config.default.js config.js
最后一步,就是把假配置文件 ,改名为真的 config.js , 也就是说是程序真正会读到的配置文件。
打开配置文件,把
mongo = {
db: 'db',
username: 'admin',
password: 'pass',
...
url: 'mongodb://localhost:27017/db',
};
改为
mongo = {
db: 'digicity',
username: '',
password: '',
...
url: 'mongodb://localhost:27017/digicity',
};
上面的 digicity
就是我们要操作的数据库的名字,这个是通过 mongo shell 中,执行
show dbs
看到的。
同时,mongo-express 的密码有默认值,通过 config.js 中这几行:
basicAuth: {
username: process.env.ME_CONFIG_BASICAUTH_USERNAME || 'admin',
password: process.env.ME_CONFIG_BASICAUTH_PASSWORD || 'pass',
},
用户名是 admin
,密码是 pass
。
启动 mongo-express 需要开启一个新的命令行标签。然后输入
$ mongo-express
在深度 Linux 上,输出如下
Mongo Express server listening at http://localhost:8081
basicAuth credentials are "admin:pass", it is recommended you change this in your config.js!
Connecting to digicity...
虽然上面有一个 MongoError
但是,浏览器中打开: http://localhost:8081 可以开始使用
mongo-express 了。
总结
上面。我们分别用 Mongo Shell 和 mongo-express 两种方式,对 mongodb 数据库进行了操作。 但是,最重要的一种操作 mongodb 的形式我们还没有介绍。这就是用 JS 来操作 mongodb 。