• 【SRH】------mongoose,增、删、改、查


    mongoose中文文档
    https://cn.mongoosedoc.top/docs/guide.html

    mongodb与mongoose的区别

    mongodb
    非关系型数据库,可自定义字段类型
    一个mongodb中可以建立多个数据库
    mongodb的默认数据库为db,该数据库存储在data目录中
    mongodb的单个实例可以容纳多个独立的数据库,每个都有自己的集合和权限,不同的数据库放置在不同的文件中
     
     
    mongoose
        mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易 
    可以将非关系型数据库转为关系型数据库
    可以限制字段的类型
    mongoose有promise的用法形式,可以链式操作
     
     
    0.准备工作
      先安装mongoodb 和node.js
     
    1.启动mongodb服务器
     mongod --dbpath e:datadb
     
    2.在项目根目录下 
       初始化项目      
             npm init -y
     
          下载mongoose    
            cnpm install  mongoose  --save-dev(局部下载,如果需要该模块,每个项目下都要新下载)

    node连接数据库,实现增、删、改、查

    //引入mongoose模块
    const mongoose = require("mongoose");
    //定义连接的数据库地址和数据库名称
    const url = "mongodb://127.0.0.1:27017/demo3";
    //连接数据库demo3
    mongoose.connect(url,(err)=>{
        //判断是否连接成功
        if(err){
            console.log("连接失败");
        }else{
            console.log("连接成功");
        }
    })
    
    
    //创建新表,并规定表中的数据类型
    // 参1:需要连接的表(mongoose会自动将这个表加s)
    // 参2:字段的类型对象(字段的配置项),是一个对象
    // model为函数(相当于构造函数,Stu为函数名)
    const Stu = mongoose.model("user",{
        name:String,
        age:Number
    })
    //增(想要增加多条数据,就要创建多个对象)
    const stu1 = new Stu({
        name:"",
        age:13
    })
    stu1.save().then((data)=>{
       // 回调函数中只有一个参数data,没有err
        //data为增加到数据库中的数据
        console.log(data)
        
    })
    //
    Stu.remove({
        name:""
    }).then((data)=>{
         //回调函数中只有一个参数data,没有err
        //data为删除的数据的条数,删除是否成功
        console.log(data);//{ n: 4, ok: 1 }
    
    })
    //
    Stu.update({
        name:""
    },{
        $set:{
            "age":222
        }
    }).then((data)=>{
        //{ n: 1, nModified: 1, ok: 1 }
        console.log(data)
    })
    //查  所有数据(链式操作,查找后输出)
    
    Stu.find().then((data)=>{
        //回调函数中只有一个参数data,没有err
        console.log(data);
    })
    //查  指定数据
    Stu.find({name:""}).then((data)=>{
        console.log(data)
    })
    //查  指定的列
    
    Stu.find({},{"name":2,"_id":0}).then((data)=>{
        console.log(data);
    })
    //查  第一条数据
    Stu.findOne().then((data)=>{
        console.log(data);
    })
    //升序
    Stu.find().sort({"age":1}).then((data)=>{
        console.log(data);
    })
    //降序
    
    Stu.find().sort({"age":-1}).then((data)=>{
        console.log(data);
    })
    //查找比较 > 、<、>=、<=
    //>
    Stu.find({age:{$gt:15}}).then((data)=>{
        console.log(data);
    })
    //<
    
    Stu.find({age:{$lt:15}}).then((data)=>{
        console.log(data);
    })
    //>= <=
    Stu.find({age:{$gte:12,$lte:18}}).then((data)=>{
        console.log(data);
    })
    //不等于
    
    Stu.find({age:{$ne:13}}).then((data)=>{
        console.log(data);
    })
    //模糊查询(正则)
    Stu.find({name:/孙/}).then((data)=>{
        console.log(data);
    })
    
    
    Stu.find({name:/^王/}).then((data)=>{
        console.log(data);
    })
    
    
    Stu.find({name:/王$/}).then((data)=>{
        console.log(data);
    })
    
    
    
    //or或者
    Stu.find({$or:[{name:""},{name:""}]}).then((data)=>{
        console.log(data);
    })
    //分页
    //limt
    Stu.find().limit(2).then((data)=>{
        console.log(data);
    })
    //skip()
    Stu.find().skip(1).then((data)=>{
        console.log(data);
    })
    
    
    Stu.find().skip(1).limit(1).then((data)=>{
        console.log(data);
    })
    //包含$in,查找年龄是13和17的数据(注意,不是范围)
    Stu.find({age:{$in:[13,17]}}).then((data)=>{
        console.log(data);
    })

    ///
    包含$nin,查找年龄不是13和17的数据(注意,不是范围)
    Stu.find({age:{$nin:[13,17]}}).then((data)=>{
        console.log(data);
    })
     
  • 相关阅读:
    数据结构(线性结构-栈)
    数据结构(线性结构-队列)
    数据结构(树状结构-二叉树)
    数据结构(树状结构-树)
    数据结构(线性结构-串)
    数据结构(堆)
    数据结构(图)
    查找(静态查找表)
    查找(动态查找表)
    查找(哈希表)
  • 原文地址:https://www.cnblogs.com/SRH151219/p/10202863.html
Copyright © 2020-2023  润新知