2020年一篇文章入门Mongodb

作者: 爱写Bug的程序猿 | 来源:发表于2020-02-11 12:45 被阅读0次
    logo

    不要问我为什么挂图,听说挂图可以提供浏览量

    介绍

    MongoDB是一种存储二进制JSON格式的非关系数据库。

    版本

    小版本号,奇数为开发板、偶数为稳定版。

    3.2版本后不支持32位系统。

    下载安装(4.2)

    下载:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.2-signed.msi

    安装:无脑下一步

    配置:配置环境变量

    默认端口:27017

    核心概念

    • 数据库:数据的仓库
    • 集合:类似于数组
    • 文档:Mongo最小的单位,一般操作的是文档

    注意:在MongoDB中数据库和集合不用手动创建。

    系统变量

    • db:当前数据库的名字

    基本指令

    • show dbs:列出数据库

    • use <数据库名>:进入数据库

      • 注意:如果没有数据库会自动创建数据库。
    • show collections :显示数据库中所以的集合。

    • db.<collections>.drop():删除集合

    • db.dropDatabase(): 删除所在的数据库

    CRUD指令

    插入文档

    • db.<collections>.insert(JSON)
      • 向<collections>集合中插入一个JSON文档。

    查询文档

    • db.<collections>.find()
      • 查询<collections>中的所有JSON文档,返回的是数组。
    • db.<collections>.findOne({<filed>:<value>})
      • 查询与<filed>等于<value>的JSON文档,返回的是对象。
    • 内嵌查询:{“filed.filed”:value}
    • 分页:.skip().limit()

    修改文档

    • db.<collections>.update(query,doc,options)
      • 查询到query,将query匹配的那个JSON进行替换为doc。
      • 操作符:在doc中写
        • $set:{}:修改某一个字段。
        • $unset:{}:删除某个字段。
        • $push:{}: 添加元素到一个数组
        • $addToSet:{}: 添加不重复的元素到数组
      • 参数:options
        • mulit:boolean 修改多个
      • 注意:默认改一个。

    删除文档

    • db.<collections>.deteleOne()
    • db.<collections>.deleteMany()
    • db.<collections>.remove()
      • 注意:默认删除多个。

    文档关系

    • 一对一
    • 一对多
    • 多对多

    文档其他操作

    sort

    db.<collections>.find().sort(SortJSON);
    SortJSON:
    {
        filed:1 | -1
    }
    说明:
        对filed字段进行
        1-升序或
        -1-降序
        排序
    

    投影

    db.<colletions>.find({},MapJSON);
    MapJSON:
    {
        filed:0 | 1
    }
    说明:
    显示或隐藏某个字段
    0-隐藏
    1-显示
    

    Mongoose

    Node操作mongodb的库。

    优势

    • 可以对文档创建一个模式结构(Schema)
    • 对模型中的对象进行约束。
    • 自动类型转换

    对象

    • Schema:模式对象
    • Model:集合就是模型
    • Document:就是JSON

    Schema->Model->Document

    安装

    npm i -S mongoose
    

    使用

    const mongo = require('mongoose');
    const { Schema, model } = mongo;
    
    const stuSchema = new Schema({
      name:String,
      age:Number,
      gender:Number,
      address:String
    });
    
    const Student = model('Student', stuSchema);
    
    mongo.connection.once('open',()=>console.log("连接成功"));
    
    mongo.connection.once('close', ()=> console.log("断开连接"));
    
    async function start() {  
      const connect = await mongo.connect('mongodb://localhost:27017/dome1',{useNewUrlParser:true ,useUnifiedTopology:true});
      // const resRowInfo = await Student.create({
      //   name:100,
      //   age:"15",
      //   gender:"男"
      // });
      // // const resRowInfo = await Student.find();
      // const resRowInfo = await Student.remove({gender:null});
      const resRowInfo = await Student.findOne()
      resRowInfo.name = '猪八戒';
      resRowInfo.address = '高老庄';
      resRowInfo.save();
      console.log(resRowInfo);
      // connect.disconnect();
    } 
    start();
    
    

    相关文章

      网友评论

        本文标题:2020年一篇文章入门Mongodb

        本文链接:https://www.haomeiwen.com/subject/fbxxfhtx.html