MongoDB数据库

数据库概念及环境搭建

为什么要使用数据库

  1. 动态网站中的数据都是存储在数据库中
  2. 数据库可以用来持久存储客户端通过表单收集的用户信息
  3. 数据库本身可以持久对数据进行高效的管理

什么是数据库
数据库即存储数据的仓库,可以将数据进行有序的分门别类的存储。它是独立于语言之外的软件,可以通过API去操作它。常见的数据库软件有:Mysql,mongoDB,oracle
在这里插入图片描述
MongoDB可视化软件
MongoDB可视化操作软件,是使用图形界面操作数据库的一种方式。
在这里插入图片描述
在这里插入图片描述
数据库相关概念
在一个数据库软件中可以包含多个数据库仓库,在每个数据库仓库中可以包含多个数据集合,每个数据集合中可以包含多条文档(具体的数据)
在这里插入图片描述
Mongoose第三方包

  1. 使用Node.js操作MongoDB数据库需要依赖Node.js第三方包mongoose
  2. 使用npm install mongoose命令下载

启动MongoDB
在命令行中运行net start mongoDB即可启动mongoDB,否则MongoDB将无法连接

注意:命令行需要被赋予管理员权限才可以执行net start/stop mongodb指令,否则拒绝访问

数据库连接
使用mongoose第三方模块提供的connect方法即可连接数据库

//引用mongoose第三方模块
const mongoose = require("mongoose");

//使用mongoose模块的connect方法连接mongoDB数据库
mongoose.connect("mongodb://localhost/qzxbg",{
   
    useNewUrlParser: true,
    useUnifiedTopology: true
    })
    .then(()=>{
   
        console.log("数据库连接成功")
    })
    .catch(error=>{
   
        console.log("数据库连接失败"+error);
    })

创建数据库
在mongoDB中不需要显示创建数据库,如果正在使用的数据库不存在,MongoDB会自动创建

创建集合
创建集合分为两步,一是对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。

//使用mongoose模块的mongoose.Schema方法来创建集合规则
const courseInfo = new mongoose.Schema({
   
    name:String,
    author:String,
    isPublished:Boolean
})
//使用mongoose.model方法来创建集合
//两个参数:1.集合的名字也就是表名 2.集合的规则也就是表中各个字段的约束条件
const course = mongoose.model("Course",courseInfo);

创建文档

创建文档实际上就是向集合中插入数据。分为两步
(1)创建集合的实例
(2)调用实例对象下的save方法将数据保存到数据库中。

创建文档的方式:
(1)通过集合实例传参

//使用mongoose模块的mongoose.Schema方法来创建集合规则
const courseInfo = new mongoose.Schema({
   
    name:String,
    author:String,
    isPublished:Boolean
})
//使用mongoose.model方法来创建集合,返回值为集合构造方法
const course = mongoose.model("Course",courseInfo);
//创建集合实例
const courser = new course({
   
    name:'node.js入门',
    author:"qzxbg",
    isPublished:true
});
//将文档插入到数据库当中
courser.save();

(2)调用集合构造函数的create方法,create方法返回promise对象

//调用集合的构造方法下面的create方法来创建文档
//create方法接收两个参数
//1.集合规则对应的数据
//2.回调函数,回调函数也接受两个参数:
//(1)错误对象,如果插入成功则err的值为null
//(2)插入的文档
course.create({
   
    name:"mongoDB入门",
    author:"qzxbg",
    isPublished:true
},(err,doc)=>{
   
    if(err == null){
   
        console.log(doc);
    }else{
   
        console.log("插入文档失败");
    }
})
//create方法返回的是一个promise对象
course.create({
   
    name:"mongoDB入门",
    author:"qzxbg",
    isPublished:true
}).then(result=>{
   
	console.log(result);
}).catch(error=>{
   
	console.log(error);
})

MongoDB数据库导入数据
mongoimport -d 数据库名称 -c 集合名称 --file数据文件

需要提前配置系统变量,才能执行该指令

查询文档

  1. 使用集合构造函数的find方法进行查询,如果没有指明条件,则返回一个数组,里面包含该集合的所有文档,如果指明了查询条件,则返会一个数组,里面包含了该集合中对应查询条件的文档
//查看用户集合中的所有文档
user.find()
    .then(result=>{
   
        console.log(result);
    })
    .catch(error=>{
   
        console.log(error);
    })
//查看具体集合的文档
user.find({
   
    name:"小明"
    })
    .then(result=>{
   
        console.log("小明的数据:"+result);
    })
    .catch(error=>{
   
        console.log("该数据不存在");
    })
  1. 使用集合构造函数的findOne()方法查询,返回一条数据,其他和find方法一样。
//使用集合构造函数的findOne方法进行查询
user.findOne()
    .then(result=>{
   
        console.log("findOne:"+result)
    })
    .catch(error=>{
   
        console.log("查询失败");
    })
user.findOne({
   age:17})
    .then(result=>{
   
        console.log("age"+result);
    })
    .catch(error=>{
   
        console.log("查询失败")
    });
  1. 匹配使用$gt,$lt来匹配大于,小于条件
user.find({
   age:{
   $gt:17}})
    .then(result=>{
   
        console.log("age"+result);
    })
    .catch(error=>{
   
        console.log("查询失败")
    });

user.find({
   age:{
   $lt:18}})
    .then(result=>{
   
        console.log("$lt"+result)
    })
    .catch(error=>{
   
        console.log(error);
    })
  1. 使用$in来匹配包含关系
//使用$in来匹配包含关系
user.find({
   name:{
   $in:["小明"]}})
    .then(result=>{
   
        console.log("$in:"+result);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值