参考网址
菜鸟教程:https://www.runoob.com/mongod...
express:https://www.expressjs.com.cn/
mongoose:http://www.mongoosejs.net/
源码
github:https://github.com/nowRookie/...
1、下载mongodb
1、mongodb下载地址:https://www.mongodb.com/try/d...
2、mongodb下载需要访问外网,推荐使用Ghelper的google插件
3、安装过程一定不要勾选install mongodb compass,图形工具,否则会很慢
4、配套使用的图形工具,我选择的robo3T,下载地址https://robomongo.org/
5、设置环境变量,E:\mongodb\bin
2、快速启动mongodb
(1)通过.bat批处理文件
新建一个.bat后缀的文件,内容如下
E:
cd E:\mongodb\bin
start mongod --dbpath=E:\mongodb\data
D:
cd D:\360download\Robo 3T 1.3.1
start robo3t.exe
(2)网上说可以通过安装开机启动,net start MongoDB,来启动,但是我没有成功
3、基本项目express + mongoose
1、新建文件夹express
2、npm init,一直回车,初始package.json
3、修改package.json,安装对应的包
4、这里一定要安装最新的babel相关的包@babel,否则项目中使用某些es6新特性还不支持,如{...}
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon --exec babel-node ./app.js"//项目热更新
},
"author": "",
"license": "ISC",
"dependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/node": "^7.12.6",
"@babel/preset-env": "^7.12.1",
"asyncro": "^3.0.0",
"body-parser": "^1.19.0",
"cookie-parser": "^1.4.5",
"cookie-session": "^1.4.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"fs-extra": "^9.0.1",
"hbs": "^4.1.1",
"lodash": "^4.17.15",
"moment": "^2.24.0",
"mongoose": "^5.9.9",
"multer": "^1.4.2",
"nodemon": "^2.0.4",
"ueditor": "^1.2.3"
}
}
4、新建.bablerc文件
{
"presets": [
[
"@babel/preset-env"
]
]
}
5、新建app.js,内容如下
import express from "express"
const app = express()
import path from "path"
import { port } from "./config"
// cors跨域处理
import cors from "cors"
app.use(cors())
// body-parser中间件
import bodyParser from 'body-parser'
app.use(bodyParser.json())
// middleware打印log信息
import log from "./middleware/log"
app.use(log())
// 静态资源
app.set('view engine', 'hbs')
app.set("views", process.cwd() + "/hbs")
app.use(express.static("static"))
app.use(express.static("uploads"))
app.use("/virtual", express.static(path.join(__dirname, "static")))
// 路由
import router from "./router/index"
router(app)
// ueditor百度文本编辑框
import ueditor from "./plugins/ueditor.js"
ueditor(app)
// mongoose连接
import mongoose from 'mongoose';
mongoose.set('useFindAndModify', false)
mongoose.connect('mongodb://localhost/websiteDB', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// db数据库
const db = mongoose.connection;
db.on('error', () => console.error('connection error:'));
db.once("open", () => {
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
})
6、mongoose操作数据库
mongoose主要有两样东西scehma、model
我们可以新建一个文件userModel.js
const mongoose = require("mongoose")
let Schema = mongoose.Schema({
username: {
type: String,
required: true,
},
password: {
type: String,
required: true,
minLength: 6,
maxLength: 20,
validate: {
validator: (value) => {
return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/.test(value)
},
message: "tags 必填"
}
}
}, {
collection: "users",
minimize: false,//将会保存空对象
timestamps: { createdAt: 'createTime', updatedAt: "updateTime" }
})
let Model = mongoose.model("users", Schema)
export default Model
至此就可以通过Model去操作数据库了
配合上express的话
新建一个userRouter.js
import express from "express"
const eRouter = express.Router()
import userModel from "../model/userModel"
eRouter.route("/api/users")
.get((req, res,) => {
userModel.find(req.query, (dbErr, dbRes) => {
if (dbErr) return res.status(500).send({ code:201, message: "数据库查询错误" })
res.send(dbRes)
})
})
export default eRouter
最后在app.js当中引入
app.use("/", userRouter)
其他
(1)mongo.exe 基本命令
//dbName:数据库名称
use dbName //创建数据库
//sheetName:表名称
db.sheetName.insert({}) //插入数据,mongo会自动带上一个_id的标识符
db.sheetName.find() //查询
db.sheetName.find(id : {$gt : 2}).forEach(printjson) //$gt大于,printjson打印
db.sheetName.sort({keyName : -1}) //按照keyName降序排列
db.sheetName.find().limit(2) //限制查询条数为2条
db.sheetName.count() //计数
db.sheetName.remove({}) //删除全部
db.sheetName.update({id : 1},{$set:{keyName : newVal}}) //更新id为1的数据,$set设置新的value
//创建admin用户
db.createUser(
user : "admin",pwd : "admin",
roles : [
{role : "userAdminAnyDataBase",db : "admin"}
]
)
db.createUser(
user : "username",pwd : "123456",
roles : [
{role : "userAdmin",db : "employee"}
]
)
//role可以为 userAdminAnyDataBasr userAdmin read readWrite
(2)bin文件下.exe的区别:
mongodump.exe 备份程序
mongostat.exe 监控服务器发生的增删改查
mongotop.exe 跟踪报告读写活动
ServerStatus 返回数据库状态,包括磁盘使用,内存
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。