一、环境搭建
1.1 mongodb简介
MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组

主要特点
- 高可扩展性
- 分布式存储
- 低成本
- 结构灵活
1.2 window下mongodb环境搭建
- 下载安装包或压缩包
- 添加
db存储和日志存储文件夹 - 添加服务、配置环境变量、启动
Mongo
配置演示
- 在任意目录创建几个文件夹


通过命令行启动服务
配置环境变量
# --dbpath指定数据存储位置 |

通配置启动服务
# 配置d:\mongodb\etc\mongodb.conf |
- 启动方式
C:\Program Files\MongoDB\Server\3.4\bin\mongod --config d:\mongodb\data |

更加简洁的启动方式
安装到
window的服务里面,打开Windows看一下
C:\Program Files\MongoDB\Server\3.4\bin\mongod --config d:\mongodb\data --install --serviceName "MongoDB" |

使用MongoVue连接数据库


1.3 linux下mongodb环境搭建
- 下载安装包或压缩包
- 添加
db存储和日志存储文件夹 - 添加服务、配置环境变量、启动
Mongo
# 远程登录服务器 |
上传本地的安装包
# 上传文件夹,传文件不需要r |
# 在指定的目录创建启动需要的文件 |
# /home/etc/mongo.conf配置 |
# 启动服务 |
# 创建软连接 |
二、基本概念
2.1 数据库对比
| SQL术语/概念 | MongoDB术语/概念 | 解析/说明 |
|---|---|---|
database |
database |
数据库 |
table |
collection |
数据表/集合 |
row |
document |
数据记录/文档 |
column |
field |
数据记录行/文档 |
index |
index |
索引 |
table |
joins |
表连接,MongoDB不支持 |
primary key |
primary key |
主键,MongoDB自动将_id字段设置为主键 |

2.2 数据库
- 一个
mongodb中可以建立多个数据库 MongoDB的默认数据库为”db“,该数据库存储在data目录中"show dbs"命令可以显示所有数据的列表- 执行
"db"命令可以显示当前数据库对象或集合 "use"命令,可以连接到一个指定的数据库
2.3 文档
- 文档是一组键值(
key-value)对(即BSON)
{"site":"www.runoob.com", "name":"菜鸟教程"} |
2.4 插入文档
- 切换数据库
use数据库名(没有就创建)
db.createCollection("user")- 创建集合相当于创建表名
- 或者这样创建
db.user.inert({id:123})
2.5 插入数据表
1. 手动插入
# 切换创建数据库 |
2. 客户端插入
利用
mongodbVue导入
三、常用操作
3.1 创建用户
1. 创建管理员
- 开启服务
# --auth进行授权,需要认证才可以 |
2. 通过非授权的方式启动服务
# 创建admin数据库 |

3. 给使用的数据库添加用户
- 创建用户

- 然后在授权登录试一下
3.2 MongoDB 创建数据库
MongoDB创建数据库的语法格式如下- 如果数据库不存在,则创建数据库,否则切换到指定数据库
use DATABASE_NAME |
- 查看所有数据库
show dbs
- 我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,我们需要向 runoob 数据库插入一些数据
> db.runoob.insert({"name":"poetries"}) |
3.3 MongoDB 删除数据库
MongoDB删除数据库的语法格式如下- 删除当前数据库,默认为
test,你可以使用db命令查看当前数据库名
db.dropDatabase() |
3.4 删除集合
db.collection.drop() |
3.5 MongoDB 插入文档
文档的数据结构和
JSON基本一样
3.6 插入文档
MongoDB使用insert()或save()方法向集合中插入文档,语法如下
db.COLLECTION_NAME.insert(document) |
- 以下文档可以存储在
MongoDB的runoob数据库 的col集合中
>db.col.insert({title: 'MongoDB 学习', |
以上实例中
col是我们的集合名,如果该集合不在该数据库中,MongoDB会自动创建该集合并插入文档。查看已插入文档
> db.col.find() |
3.7 MongoDB 更新文档
MongoDB使用update()和save()方法来更新集合中的文档
3.7 update() 方法
update()方法用于更新已存在的文档。语法格式如下
- 通过
update()方法来更新标题(title):
db.col.update({'title':'MongoDB 学习'},{$set:{'title':'MongoDB'}}) |
四、常用查询语句
| mongo | sql | 说明 |
|---|---|---|
db.users.find() |
select * from users |
从user表中查询所有数据 |
db.users.find({“username” : “joe”, “age” : 27}) |
select * from users where “username” = “joe” and age = 27 |
查找username = joe且age = 27的人 |
db.users.find({}, {“username” : 1, “email” : 1}) |
select username, email from users |
查找username,email这2个子项 |
db.users.find({“age” : {“$gt” : 18}}) |
select * from users where age >18 |
查找age > 18的会员 |
db.users.find({“age” : {“$gte” : 18}}) |
select * from users where age >=18 |
查找age >= 18的人 |
db.users.find({“age” : {“$lt” : 18}}) |
select * from users where age <18 |
查找age < 18的人 |
db.users.find({“age” : {“$lte” : 18}}) |
select * from users where age <=18 |
查找age <= 18的人 |
db.users.find({“username” : {“$ne” : “joe”}}) |
select * from users where username <> “joe” |
查找 username != joe的会员 |
db.users.find({“ticket_no” : {“$in” : [725, 542, 390]}}) |
select * from users where ticket_no in (725, 542, 390) |
符合tickt_no在此范围的结果 |
db.users.find({“ticket_no” : {“$nin” : [725, 542, 390]}}) |
select * from users where ticket_no not in (725, 542, 390) |
符合tickt_no不在此范围的结果 |
db.users.find({“name” : /joey^/}) |
select * from users where name like “joey%” |
查找前4个字符为joey的人 |
五、MongoDB链接
5.1 MongoDB链接express
const express = require('express'); |