MongoDB数据库

94 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

一。数据库

1.什么是数据库

 ①。动态网页的数据都是存储在数据库中的
 ②。可以用来持久存储客户端通过表单收集的用户信息
 ③。可以对数据进行高效的管理
 ④。数据库就是数据的仓库,将数据进行分类有序的存储,通过API操作数据
 

2.数据库分类

1)关系型数据库:
    
    ①关系型全都是  表 
    ②。MySQL,Oracle,SQL Server2)非关系型数据库
    
    ①。MongoDB:
    MongoDB 是为快速开发互联网Web应用而设计的数据库系统
    数据库中存的是各种各样的JSON文件(BSON 二进制的)
    更贴近前端编写习惯,容易上手
    
    ②。文档数据库

二。下载网址

www.mongodb.com/try/downloa…

三。安装

1.配置环境变量

①。(找到自己的安装路径)并复制

QQ截图20220615140109.png ②。打开这个程序

QQ截图20220615140704.png

 show dbs (databases)  查看当前所有数据库
 这几个文件默认的
          

QQ截图20220615140920.png

     db  当前数据库
show collections    查看当前数据库中所有的集合


db.集合名称.insert({name:"张三"age:23,sex:"男"})     往集合中添加数据,如果集合不存在则自动创建

QQ截图20220615141614.png

 db.集合名称.find( )    查看集合中的所有数据  ==>   
 db.集合名称.find( ).pretty( ) 
 

QQ截图20220615141731.png

四。使用

1.数据库database :数据库是一个仓库,存放集合

2.集合collection :集合类似数组,集合中存放文档

3.文档document :文档中的数据,存储和操作内容

4.字段filed :文档中属性的名称

5.使用方式

 ①。在命令行中操作MongoDB
 ②。可视化图形工具中操作
 ③。通过后端代码去操作

6.安装第三方包

 npm install mongoose

五。使用步骤

1:导入mongoose

2:使用 mongoose 连接 MongoDB

    如果连接成功,则执行then()方法,失败则执行catch()方法
mongoose.connect("mongodb://127.0.0.1/myserver")
.then(()=>{
console.log("数据库链接成功");
  })
  .catch((err)=>{
console.log("数据库链接失败",err);
 })

3:创建集合(集合就是表)

3-1创建集合的规则

     let inforSchema = new mongoose.Schema({
name:String,
age:Number,
sex:String
      })

3-2创建表

  第一个参数是表名,第二个是 规则
 let student = mongoose.model("student",inforSchema)
   

4:创建文档

4-1 第一种:创建文档数据

// let s1 = new student({
//     name:"郑秀妍",
  //     age:26,
   //     sex:"女"
// })
    

4-2保存文档

// s1.save((err,result)=>{
 //     console.log(err);
//     console.log(result);
 // })   
 

4-3:第二种 创建文档数据及保存文档

        创建文档数据及保存文档
student.create({
   name:"谭维维",
age:28,
sex:"女"
  }).then(ret=>{
  console.log(ret);
  }).catch(err=>{
  console.log(err);
 })
 

操作添加数据之前
QQ截图20220615142509.png

操作添加数据之后 QQ截图20220615152851.png

QQ截图20220615152933.png

QQ截图20220615162323.png

QQ截图20220615172451.png

5.查询

5-1: find() 无参查询所有数据

students.find().then(res=>{
console.log(res)
  })
  

QQ截图20220615161928.png

5-2: find(参数) 有参查找指定数据

   students.find({name:"谭大维"}).then(res=>{
console.log(res);
})

QQ截图20220615162630.png 5-3:select() 查询指定的数据,返回值是数组

 students.find({name:"王心凌"}).select("name age").then(res=>{
console.log(res)
})

QQ截图20220615162926.png

5-4 findOne() 查询指定的一个数据,返回值是对象,如果有参则返回匹配的那个数据,如果没有则返回数据库第一条数据

  students.findOne({name:"王心凌"}).select("name age").then(res=>{
console.log(res)
})
数据库有两个王心凌,因为用了findOne(),所以只会显示第一条

QQ截图20220615163147.png 5-5查看范围 大于gt小于gt 小于lt 大于等于gte小于等于gte 小于等于lte -_id 表示去除系统自带的 id

 students.find({age:{$gte:20,$lte:25}}).select("name age -_id").then(res=>{
console.log(res)
})

QQ截图20220615164144.png

5-6查询包含的数据 regex() 正则

 students.find({name:{$regex:/维/}}).select("name age -_id").then(res=>{
console.log(res)
})

QQ截图20220615165522.png

5-7 inin all 用于查看包含的数据

  students.find({hobbies:{$in:["唱歌"]}}).select("name age hobbies -_id").then(res=>{
console.log(res)
})

QQ截图20220615171833.png