MongoDB和MVC

本文详细介绍了如何使用MongoDB命令行进行数据库操作,包括创建、切换、查询、增删改等,并结合Node.js和Mongoose库,展示了如何在实际项目中实现RESTful接口和数据处理,以及如何使用GraphQL进行前端按需请求数据。
摘要由CSDN通过智能技术生成

安装教程

https://blog.csdn.net/HTouying/article/details/88428452
可视化
https://blog.csdn.net/li_jiazhi/article/details/103218619

命令行操作

show dbs 查看所有数据库(查不出来自己创建的空数据库, 必须放一张表)
db 查看当前数据库
use 数据库名  创建/切换数据库
db.createCollection("user") 创建表
db.dropDatabase() 删除库, 不用传参
db.getCollection("acconut") 查询指定名称的表
db.getCollectionNames() 查询当前库中所有的表
db.printCollectionStats() 查询所有表的状态
db.account.drop()  删除account表

增删改

db.user.save({name:"张三", age: 12}) 新增
db.user.find() 查询user表所有数据
db.u.save([{username:"zhang", age: 12}, {username:"zhang", age: 13}]) 批量插入数据, 要是没有这个表,会自动创建该表然后插入数据
db.u.remove({age: 12}) 删除数据 传空对象删除所有数据
db.u.update({username: "zhang"}, {age: 18}) 修改数据(会覆盖), 将username=zhang的数据改成age:18
db.u.update({username: "zhangsan"}, {$set:{age: 18}}) 修改数据, 不覆盖
db.u.update({username: "zhangsan"}, {$inc:{age: 10}}) 增加10
db.u.update({username: "zhangsan"}, {$inc:{age: -10}})10

查询

db.u.find({username: "zhangsan"}) 查询username是zhangsan的
db.u.find({age: {$gt: 11}}) age>11
db.u.find({age: {$lt: 11}}) age<11
db.u.find({age: {$gte: 11}}) 大于等于
db.u.find({age: {$lte: 11}}) 小于等于
db.u.find({age: {$gte: 20, $lte: 25}}) age>=20并且<=25
db.u.find({username: /zhang/}) 模糊查询,username包含zhang
db.u.find({username: /i$/}) username以i结尾的
 db.u.find({}, {username:1,_id:0}) 查询所有数据,显示username,不显示_id
 db.u.find().sort({age:1}) 从小到大
 db.u.find().sort({age:-1}) 从大到小
 db.u.find().skip(2)  查询第2条之后的数据
 db.u.find().skip(5).limit(5)  查询第5-10条数据
 db.u.find().skip((pageNum-1)*10).limit(10) 公式,跳过几条数据, 显示几个, limit与*后面的数字一致
 db.u.find({$or:[{username:"zhangsan"},{username:"lisi"}]}) 或者
 db.u.find().count() 查询条数

node链接

npm i mongoose

// db.config.js中
// 连接数据库
const mongoose = require("mongoose")
// 数据库地址  端口号  数据库名
mongoose.connect("mongodb://127.0.0.1:27017/Wzx_test")
// 插入集合(表)和数据,  数据库Wzx_test会自动创建
------------------------------------------------------------
在www或者app.js中引入
// 引入数据库模块
require("../config/db.config.js")
------------------------------------------------------------------
model文件夹中创建UserModel.js文件 创建类型
const mongoose = require("mongoose")

// 类型限制
const userType = {
  username: String,
  password: String,
  age: Number
}

// 会在mongoDB中创建users表  自动加上s   mongoose.model("aaa") 就会创建aaas表  将类型传入
const userModel = mongoose.model("user", new mongoose.Schema(userType))

module.exports = userModel
------------------------------------------------------------------------
接口中  新增数据
// 导入模型
const userModel = require('../model/UserModel');
// 插入数据  返回的是promise对象
userModel.create({username, password, age}).then(data => {
  console.log(data)
  res.send() // 成功后返回数据
})
-------------------------------------------------------
修改数据(覆盖)
router.post('/update/:id', function(req, res, next) {
  const {username, password, age} = req.body
  // 修改数据 updateOne 只改一条数据    updateMany 修改所有查出来的数据
  userModel.updateOne({_id: req.params.id}, {username, password, age}).then(data => {
    console.log(data)
  })
  res.send(req.body)
})
修改指定的字段
 userModel.updateOne({_id: req.params.id}, {$set: {password}}).then(data => {
   res.send(req.body)
 })
---------------------------------------------------------
删除数据
router.get("/del/:id", (req, res) => {
  userModel.deleteOne({_id: req.params.id}).then(data => {
    res.send({ok: 1})
  })
})
查询所有数据
userModel.find().then(data => {
  res.send(data)
}))
查询指定字段
userModel.find({}, ["username", "age"]).then(data => {
  res.send(data)
})
排序
userModel.find({}, ["username", "age"]).sort({age: 1}).then(data => {
  res.send(data)
})
查username是admin
userModel.find({username: "admin"}, ["username", "age"]).sort({age: 1}).then(data => {
  res.send(data)
})
分页
userModel.find({}, ["username", "age"]).skip((page - 1) * limit).limit(limit).then(data => {
  let list = data
  userModel.find().count().then(data => {
    res.send({
      list,
      count: data
    })

  })
})

RESTful接口规范

post新增  delete删除  put修改  get查询
// 响应新增的post请求
router.post('/', function(req, res, next) {
  const {username, password, age} = req.body
  // 插入数据
  userModel.create({username, password, age}).then(data => {
    console.log(data)
    res.send(req.body)
  })
})
// 响应修改的put请求
router.put('/:id', function(req, res, next) {
  const {username, password, age} = req.body
  // 修改数据 updateOne 只改一条数据    updateMany 修改所有查出来的数据
  userModel.updateOne({_id: req.params.id}, {$set: {password}}).then(data => {
    res.send(req.body)
  })
})
// 响应删除的delete请求
router.delete("/:id", (req, res) => {
  userModel.deleteOne({_id: req.params.id}).then(data => {
    res.send({ok: 1})
  })
})
// 响应get查询请求
router.get("/", (req, res) => {
  const {page, limit} = req.query
  userModel.find({}, ["username", "age"]).skip((page - 1) * limit).limit(limit).then(data => {
    let list = data
    userModel.find().count().then(data => {
      res.send({
        list,
        count: data
      })

    })
  })
})

graphql

前端按需请求数据

mvc

路由中
// 导入controller
const userController = require("../controllers/userController.js")
router.post('/', userController.addUser)
------------------------------------------------------------------------
controller中
// 导入service
const userService = require("../services/userService.js")
async function addUser  (req, res, next) {
  const {username, password, age} = req.body
  // 插入数据
  await userService.addUser(username, password, age)
  res.send({ok: 1})
}

const userController = {
  addUser,
}
module.exports = userController 
service中
// 导入模型
const userModel = require('../model/UserModel');

function addUser(username, password, age) {
// 返回的promise对象
  return userModel.create({username, password, age})
}

const userService = {
  addUser
}

module.exports = userService
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值