Mongoose操作mongoDB的详细步骤

Mongoose简介

1.mongoose是nodeJS提供连接 mongodb的一个库,
2.便捷操作MongoDB的对象模型工具(Mongoose的操作是以对象为单位的)

说的通俗易懂一点就是用来连接/操作数据库的

下载第三方驱动

1.初始化
npm init
2.下载express
npm install express --save
3.下载mongoose
npm install mongoose --save

Mongoose操作mongoDB

大体步骤

//1.连接服务器

//2.mongoose连接mongodb

//3.定义集合模型

//4.操作

==大体步骤

连接服务器
var express = require("express");
var mongoose = require("mongoose");
var app = express();
app.get("/",function(req,res){
}
app.listen(8888);
连接Mongodb

if判断是否连接成功

mongoose.connect(
	"mongodb://localhost:27017/连接的集合(库)",
	{ useNewUrlParser: true },//使用解析器来解析本次连接
	function(err) {
		//xian相关代码
	}

eg:

//res.send("ok");//测试是否连接成功,测试完删掉
    //(1)连接db 三个参数  
        //1.连接地址  mongodb://localhost:27017/库名
        //2.解析
        //3.回调函数
mongoose.connect("mongodb://localhost:27017/demo",{useNewUrlParser:true},function(err){
        //(2)判断是否连接成功
        if(err){
            console.log("连接失败");
        }else{
            console.log("连接成功");
        }
    })
定义集合

定义文档构成(类似创建数据库表字段方便添加内容的时候使用)

//两个参数 1.需要使用的的参数名字 2.定义对象内容
const User = mongoose.model("==集合名==",{ //可能在创建之后集合名会多个s
                行名:数据类型,//内容与数据类型
                行名:数据类型
   })

注意:

1.定义集合(可能在创建之后集合名会多一个s)

2.定义文档构成用常量const(不能更改)

3.定义集合的时候位置应该放在路由外,放在里面二次请求会报错,不能重新覆盖集合模型,解决方式就是放到路由之外

eg:

const User = mongoose.model("user",{
        uname:String,
        age:Number,
        sex:String
})
操作:
增:

插入使用==save()==进行插入

//设置插入内容
const user = new User({
                key:"val",
                key:”val”
})

eg:

//设置新增内容
const user = new User({
  uname:"鸡翅包饭",
  age:20,
  sex:"男"
})
//开始插入
user.save().then((ok)=>{
  console.log(ok);
}),(err)=>{
  console.log(err);
}
删:

1.删除指定数据 在 ==remove()==中传入条件

2.删除全部eg:

//删除全部
User.remove().then((ok)=>{
     console.log(ok);
     res.send(ok);//把数据发送到前端 
})
查:

1.使用条件查询:$lt(小于) $lte(小于等于) $gt(大于) $gte(大于等于) $ne(不等于);

eg:

 //查看年龄小于20的
User.find({"age":{$lt:20}}).then((ok)=>{
  res.send(ok);
})

2.$or 或查询;

eg:

User.find({"$or":[{"uname":"椒盐蘑菇"},{"age":20}]}).then((ok)=>{
  res.send(ok);
})

3.查询指定列 除了_id以外的内容 写1就是查询出来要显示的 不显示的就不用写0 可能回出错

​ 如果只针对一行进行操作那么和以前没有区别依旧是除了指定要显示的其他都为0

find()

eg:

//只针对一行
User.find({"uname":"椒盐蘑菇"},{"_id":0,"sex":0,"__v":0,"age":0}).then((ok)=>{
     console.log(ok);
     res.send(ok);
})
//查看全部结果,只让uname显示
User.find({},{uname:1,_id:0}).then((ok)=>{
  res.send(ok);
}) 
跳:

limit()显示多少条 skip()跳过多少条

eg:

 User.find().skip(3).limit(2).then((ok)=>{
  res.send(ok);
})
改:

update()

//修改 将uname为鸡翅包饭的集合里的年龄修改为21
User.update({"uname":"鸡翅包饭"},{$set:{"age":21}}).then((ok)=>{
  console.log(ok);
  res.send(ok);
})

使用nodeJS运行静态资源文件(webServer)

express.static()来进行管理,使用中间件配合
path.join()//把内容拼接在一起,path是一个内置模块,提供一些小的工具

在路由外面调用

eg:

app.use(express.static(path.join(__dirname(文件夹路径),"文件名")))

注意:是双下划线

//定义express

var express = require("express);
var app = express();
app.get("/",function(req,res){
    console.log(__dirname)';//预定义变量,当前文件的文件夹路径
})
app.listen(8888);

eg:

var express=require("express");
var app=express();
var path=require("path")
// 使用node来作为静态资源服务器  express.static()来进行管理  配合着中间件
//path.join()把内容拼接在一起  path是一个内置模块  提供一些小的工具
// 把静态资源文件夹和当前文件夹的路径
app.use(express.static(path.join(__dirname,"jingtai")));

app.get("/",function(req,res){
   
    res.send();
})
app.listen(8888);

小知识

前端的框架大概可以分为两大类:UI框架(类样式框架)和JS框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值