zoukankan      html  css  js  c++  java
  • 前端知识点回顾——mongodb和mongoose模块

    mongodb和mongoose模块

    数据库

    数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样。

    • mySQL 关系型数据库

    类似于表格的形式,每一条数据都是以id为标识

    table
    thead name sex age id
    tbody May female 18 1
    Simple male 25 2

    • mongodb 非关系型数据库

    集合,相当于表的概念,Bson,一条数据代表一个文档(数据的基本单位)

    {
    id :
    name : May
    age : 18
    }

    mongodb

    大数据库-->子数据库-->集合(Bson)-->文档(数据的基本单位)-->字段(键值对)

    在黑窗口下执行的一些命令行:

    mongod --dbpath F:database 启动服务端,指定数据存储路径
    mongo 启动客户端
    show dbs 显示有多少个子数据库
    use simple 创建/跳转到simple子数据库进行操作
    db.dropDatabase() 删除当前子数据库
    db.createCollection(“集合名”, 限制内存大小) 在子数据库下创建一个集合
    show collections 在当前子数据库内查看所以的集合
    db.集合名.drop() 删除当前集合
    db.集合名.insert({name:”simple”,sex:”male”}) 往集合中插入数据
    db.集合名.find() 查看集合中的所有数据
    db.集合名.find().pretty() 显示格式化后的数据
    db.集合名.update({“name”:”May”},{$set:{sex:”male”}},{multi:false}) 修改集合中,name属性为wula的数据,将其sex属性改为boy。(multi属性默认可不写为false,此时只会修改先匹配到的第一条数据;改为true会将所有匹配的数据都进行修改)

    mongoose模块

    // mongoose 导入包
    const mongoose = require("mongoose");
    //连接本地子数据库simple(没有的话会创建一个),返回一个实例,默认端口27017
    const db = mongoose.createConnection("mongodb://localhost:27017/simple", {useNewUrlParser : true});
    //用原生的es6的promise替换掉mongoose自定义的promise
    mongoose.Promise = global.Promise;
    //监听是否链接成功
    db.on("error", () => {
    console.log("数据库链接失败");
    });
    db.on("open", () => {
    console.log("数据库链接成功");
    });
    // 规范数据的字段,得到Schema类
    const Schema = mongoose.Schema;
    //得到Schema实例,用来规范数据类型或者字段
    const userSchema = new Schema({
    name : String,
    age : Number, //类型的构造函数
    sex : String
    },{
    versionKey : false //取消往每个数据中插入版本信息
    });
    //创建一个集合,名为user,返回一个构造函数
    const User = db.model("user", userSchema, "user"); //如果不写第三个参数则集合名字会在后面加s为users,加了第三个参数就会直接指定它的名称
    //要插入集合的文档/数据
    const obj1 = {
    name : "simple",
    age : 25,
    sex : "男"
    };
    //插入数据
    const d1 = new User(obj1);
    d1.save((err, data) => {
    console.log(data);
    }); //返回一个promise对象
    /* d1.save().then(res => {
    console.log(res);
    }).catch((err) => {
    console.log(err);
    });
    */
    //删除数据
    /* User.deleteOne({name:"simple"}, (err, data) => {
    if(err) console.log(err);
    console.log("删除成功", data);
    }); */
    /* User.deleteMany({ name: "May" }, function (err) {
    if (err) console.log(err);
    }); */
    
  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/simpul/p/11027159.html
Copyright © 2011-2022 走看看