当前位置 博文首页 > 苦海:MongoDB简介、在node中使用MongoDB

    苦海:MongoDB简介、在node中使用MongoDB

    作者:[db:作者] 时间:2021-09-10 10:22

    MongoDB数据库简介:

    使用MongoDB的好处是不用SQL语句,它提供了对应的API,其功能和MYSQL基本相同,是最像关系型数据库的非关系型数据库;不需要设计表的结构,文档相当于json,如果想要了解更多,可以阅读相关文档:https://www.runoob.com/mongodb/mongodb-tutorial.html;

    关系型数据库:表就是关系,表与表之间的关系,所有的关系型数据库都要通过SQL语言来操作。

    非关系型数据库:比较灵活,没有表,有的就是键值对的形式。

    MongoDB使用步骤如下:

    	 // 1.安装步骤:
            // 1.打开官网:https://www.mongodb.com ---> software ---> 选择免费Community server下载,注意一定要选择msi格式。
            // 2.将下载的程序双击打开,点击下一步,出现custom和complete时选择custom自定义目录安装,不勾选install MongoDB compass,最后点击install按照提示操作,finsh完成安装。
            // 3.打开命令行mongod --version查看版本,如果显示未安装,就去改变path指向的变量(复制mongodb的bin文件路径---我的电脑---属性---高级系统设置---环境变量---编辑path----新建添加复制的路径)
        
        // 2.启动:
            // 1.打开命令行键入命令:mongod 回车  , 如果启动不成功,则需要在安装文件所在盘符的根目录手动新建:data/db/    or   服务面板找到MongoDB服务启动
            // 2.改变数据存储目录键入命令:mongod --dbpath=数据储存目录路径
        
        // 3.停止:在控制窗口Ctrl + C    or    服务面板找到MongoDB点击停止  
        
        // 4.连接数据库:新打开命令窗口键入命令:mongo 回车默认连接本机数据库    or 可视化面板       ,退出a键入命令:exit
        
        // 5.其它基本命令:1.show dbs---显示所有数据库  
                       // 2.use 数据库名----切换到指定数据(没有回自动建立),实际操作是在node中操作,一般不在命令窗口操作。
        
        
        
        // 在node中操作MongoDB:
            // 1.使用官方的mongodb包操作:https://www.github.com/mongodb/node-mongodb-native(查阅文档使用)
            // 2.也可以使用第三方基于mongodb的包 mongoose 操作:http://mongoosejs.com/(查阅文档使用),步骤:
                    // 1.命令行键入命令:npm install mongoose --save;-----------使用npm安装mongoose
                    // 2.const mongoose = require('mongoose');-----------------载入mongoose模块
                    // 3.mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true})-------连接MongoDB数据库
                    // 4.const db = mongoose.connection;  db.on('error', console.error.bind(console, 'connection error:'));  db.once('open', function() {// we're connected!})-----测试数据库连接是否成功,可以不用写这段代码
                    // 5.const kittySchema = new mongoose.Schema({name: String})--------从Schema中派生一切,可以不用写这段代码
                    // 6.const Kitten = mongoose.model('Kitten', kittySchema)------模式编译成模型
                    // 7.const silence = new Kitten({ name: 'Silence' });  console.log(silence.name); --------模型是用来构造文档的类,创建一个文档(实例化一个Kitten)
                    // 8.Kitten.save(function (err) {if (err) return console.error(err);console.log('Kitten')})-------数据持久化
                    // 9.Kitten.find(function (err) {if (err) return console.error(err);console.log('Kitten');})------查询数据
    

    在node中使用mongoose:

    	 // 在安装完mongoose的情况下使用:
        // 1.载入mongoose模块:
        var mongoose = require('mongoose');
        // 2.连接数据库:
        mongoose.connect('mongodb://localhost/test',{useMongoClient:true});
        // 3.这段代码加不加都可以,后面学习promise时会具体讲解:
        mongoose.Promise = global.Promise;
        // 4.创建一个模型(设计数据库):
        var Cat = mongoose.model('Student',{name:String});//Cat为类似表名,自己会生成小写复数的集合名,把表称作集合
        // 5.持久化:
        jack.save(function (err) {
          if (err) {
            console.log(err);
          } else {
            console.log('meow 响应出结果');
          };
        });
    
    

    mongoose中增删改查:

    	var mongoose = require('mongoose');
        var Schema = mongoose.Schema;
        // 1. 连接数据库:指定连接的数据库可以不需要存在,当你插入第一条数据之后就会自动被创建出来:
        mongoose.connect('mongodb://localhost/itcast');
        
        // 2. 设计文档结构架构(表结构),字段名称就是表结构中的属性名称,约束的目的是为了保证数据的完整性,不要有脏数据:
        var userSchema = new Schema({
            username: {
                type: String,
                required: true // 必须有
            },
            password: {
                type: String,
                required: true
            },
            email: {
                type: String
            }
        })
        
        // 3. 将文档结构发布为模型
        //    mongoose.model 方法就是用来将一个架构发布为 model
        //    第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
        //                 mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
        //                 例如这里的 User 最终会变为 users 集合名称
        //    第二个参数:架构 Schema,即文档结构架构
        //    返回值:模型构造函数
        var User = mongoose.model('User', userSchema);
        
        
        // 4. 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据增删改查:
        
        // 新增数据:
        var admin = new User({
          username: 'zss',
          password: '123456',
          email: 'admin@admin.com'
        });
        
        admin.save(function (err, ret) {
          if (err) {
            console.log('保存失败');
          } else {
            console.log('保存成功');
            console.log(ret);
          }
        });
        
        
        //查询数据:
        User.find(function (err, ret) {
          if (err) {
            console.log('查询失败')
          } else {
            console.log(ret)
          }
        })
        
        User.find({
          username: 'zs'
        }, function (err, ret) {
          if (err) {
            console.log('查询失败')
          } else {
            console.log(ret)
          }
        })
        
        User.findOne({
          username: 'zs'
        }, function (err, ret) {
          if (err) {
            console.log('查询失败')
          } else {
            console.log(ret)
          }
        })
        
        
        // 删除数据:
        User.remove({
          username: 'zs'
        }, function (err, ret) {
          if (err) {
            console.log('删除失败')
          } else {
            console.log('删除成功')
            console.log(ret)
          }
        })
        
        // 更新数据:
        
        User.findByIdAndUpdate('5a001b23d219eb00c8581184', {
          password: '123'
        }, function (err, ret) {
          if (err) {
            console.log('更新失败')
          } else {
            console.log('更新成功')
          }
        })
    

    数据可视化工具mongobooster:

    	// 数据可视化工具MongoBooster的使用步骤:
        // 1.下载地址:https://nosqlbooster.com/
        // 2.下载后双击,一路点击next
        // 3.双击打开,create一个数据库并测试连接是否成功
        // 4.对数据进行修改
        
        
        
        
        // node操作数据库:
        
        //数据库操作模块
        var mongoose = require('mongoose')
        
        // 连接到mongoose数据库当中
        // connect连接     content内容   端口号(27017为固定端口号)
        
        // 端口号后面为数据库名称,如果有这个数据库,则直接连接,如果没有数据库则先创建,在连接
        mongoose.connect('mongodb://127.0.0.1:27017/test', function(err) {
            if (err) {
                console.log('数据库连接失败')
            } else {
                console.log('数据库连接成功')
            }
        })
        
        // 数据库 =>数据表  一个数据库里面可以有多个不同类型的数据表
        // 数据表 => 数据  一个数据表里面可以有多个不同类型的数据
        
        // schema 图表
        var messageSchema = new mongoose.Schema({
            // 该数据为字符串类型
            connect: String,
            name: String,
            age: Number,
            hasStar: Boolean
        
        })
        // model  模型
        var Message = mongoose.model('messageBox', messageSchema)
        var first = new Message({
            content: '今天是周日',
            name: '小熊',
            age: 3,
            hasStar: false
        })
        
        // 保存
        first.save(function(err) {
            if (err) {
                console.log('保存失败')
            } else {
                console.log('保存成功')
            }
        })
        
        // fs.readFile(,function(err,data))
        Message.find(function(err, data) {
            if (err) {
                console.log('数据库读取失败')
            } else {
                //   读取的时候返回的是数组[ ]
                console.log('数据库读取成功')
                console.log(data)
            }
        })
    

    提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
    笔者:苦海

    cs
    下一篇:没有了