• MongoDB


    MongoDB 是非关系型数据库,NoSQL,不需要使用 SQL 语句

    菜鸟教程 中说到,MongoDB 将数据存储为一个文档,数据结构由键值对组成,文档类似于 JSON 对象

    数据库在 MongoDB 也叫数据库,但数据表叫集合(数组),表数据叫文档

    可以把整个 MongoDB 当作是个大对象,里面存储着对象(数据库),对象里存储着数组(集合),数组里只能存对象,一条记录就是一个对象,而对象里可以存任意类型数据

    MongoDB 文档结构很灵活没有任何限制,不需要像 MySQL一样先创建数据库、表、设计表结构,需要插入数据时指定往哪个数据库的哪个集合操作即可,一切由 MongoDB 来帮自动完成建库建表


    安装

    官网 下载社区版(Community Server),因为免费

    默认装C盘,安装路径为 C:Program FilesMongoDB,安装后将到 bin 目录路径配置到环境变量 path 中

    配置环境变量的目的是在各个盘符下都能使用其可执行文件,否则只能在其 bin 目录下使用
    之后随便哪个盘里都能使用命令 mongod --version 来查看版本检查是否安装成功

    启动

    MongoDB 不像 MySQL 可以在控制面板的服务启动,如何想在服务里启动,可以去菜鸟里查看教程

    另一种启动方式是命令行执行 mongod 命令,默认会使用所处磁盘根目录下的 data/db 作为自己的数据存储目录

    若是在C盘打开的 DOS 窗口,则会存储在C盘根目录下的 data/db,在其他盘运行命令的话就要先手动在当前磁盘根目录创建 data/db

    如图所示就是C盘根目录没有 data/db

    手动创建 data/db 后再执行 mongod 命令,成功启动数据库

     

    想更改默认的数据存储命令,可运行

    mongod --dbpath=数据存储目录路径

     

    停止

    直接关闭当前 DOS 窗口或者 Ctrl + C 即可

    连接

    执行 mongod 后不要关闭控制台,再打开一个新的DOS窗口,执行 mongo ,该命令会默认连接本机的 MongoDB 服务,退出的话在连接状态使用 exit 命令

    注意,若数据库没开(就是 mongod 命令没执行)是不能连接的

    命令

    show dbs 命令显示所有数据库

    db 命令查看当前操作的数据库,默认使用 test 数据库,因为 test 此时没有数据,所以 show dbs 命令后没有显示 test

    use 数据库名 命令用于切换到指定的数据库(没有的话会新建),没有数据,所以也不会显示

    use 之后,此时的db就代表 student 数据库


    Node 中操作 MongoDB

    官方的 mongodb 原生的包操作不太方便,所以一般是使用第三方的 mongoose 来操作 MongoDB 

    mongoose 是基于官方的 mongodb 包再一次做了封装

    使用方式,npm 下载后在代码中用 request() 来加载即可使用

    mongoose官网 有使用示例和使用文档 

     

    执行上面示例后,可以查询到test数据库里有了cats集合

     

    示例详解

    var mongoose = require('mongoose')
    var Schema = mongoose.Schema
    
    //1.连接数据库
    //连接本机test数据库,MongoDB是动态的,指定的数据库不需要存在,插入一条数据后会自动被创建
    mongoose.connect('mongodb://localhost/test')
    
    //2.设计文档结构(表结构)
    //字段名就是表结构中的属性名,还可加约束
    var userSchema = new Schema({
        username:{
            type:String,  //username字段,type为字段数据类型
            required:true //添加约束,表示username字段不能为空
        },
        password:{
            type:String,
            required:true
        },
        age:Number
    })
    
    //3.将文档结构发布为模型
    /*第一个参数传入一个大写名词单数字符串用来表示数据表名,mongoose会自动将
        大写名词字符串生成小写复数的集合名称users
      第二个参数为架构Schema,自定义的表结构
      返回值是模型构造函数
      */
    var User = mongoose.model('User',userSchema)
    
    //4.有了模型构造函数后,就可用这构造函数对users集合进行操作
    var user = new User({
        username:'admin',
        password:'123456',
        age:18
    })
    
    //5.持久化存储,存储时要先启动服务器,data为插入的数据
    user.save(function (err,data) {
        if(err){
            console.log('保存失败')
        }else{
            console.log('保存成功')
        }
    })

    MongoDB 自动会帮设置 id 字段(字段名是 _id ),所以不用手动设置 id,id 是字符串并且被双引号括起来

    查询数据

    除了数据的添加是要新建对象user,其他直接使用 mongoose.model( ' User ' , userSchema ) 返回的 User 调用方法

    //查询集合中所有数据,返回的是一个数组
    User.find(function (err,data) {
        if(err){
            console.log('查询失败')
        }else{
            console.log(data)
        }
    })
    
    //按条件查询,查询username为admin的数据,有多个条件的话继续写上即可
    User.find({
        username:'admin'
    },function (err,data) {
    
    })
    
    //按条件查询,返回对象.若不写条件则返回第一条记录.另外有findById()根据id来查询对象
    User.findOne({
        username:'admin'
    },function (err,data) {
        
    })

     

    删除数据

    //删除所有符合条件的数据,多条件的话再加上即可
    User.remove({
        username:'admin'
    },function (err,data) {
        if(err){
            console.log('删除失败')
        }
    })
    //根据条件删除一个:findOneAndRemove(conditions,[options],[callback])
    //根据id删除一个:findByIdAndRemove(id,[options],[callback])

     

    更新数据

    //根据id更新数据,id、要更新的内容、callback
    User.findByIdAndUpdate('1001',{
        password:'123'
    }),function (err,data) {
        if(err){
            console.log('更新失败')
        }
    }
    //根据指定条件更新一个:findOneAndUpdate([conditoins],[update],[callback])
  • 相关阅读:
    webpack常用插件及作用
    函数柯里化
    防抖和节流
    实现深拷贝
    实现new操作符
    关于js中断ajax请求
    从输入 URL 到页面加载完成,发生了什么?
    vue路由传参params和query的区别
    input输入框限制(座机,手机号码)
    判断当前页面是不是用户正在浏览的页面
  • 原文地址:https://www.cnblogs.com/Grani/p/9595283.html
Copyright © 2020-2023  润新知