mongoDB

1.核心概念

  • 数据库(database):数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
  • 集合(collection):集合类似于JS中的数组,在集合中可以存放很多文档
  • 文档(document):文档是数据库中的最小单位,类似于JS中的对象

2.下载安装与启动

  • 下载地址:https://www.mongodb.com/try/download/community-kubernetes-operator

  • 配置步骤:

    • 将压缩包移动到C:\Program Files下,然后解压
    • 创建C:\data\db目录,mongodb会将数据默认保存在这个文件夹
    • 以mongodb中bin目录作为工作目录,启动命令行
    • 运行命令mongod
      图片
    • 客户端连接本机的mongodb服务,运行命令mongo
      图片
    • 配置环境变量,方便任意窗口使用mongodb;将bin目录配置到环境变量path中
      在这里插入图片描述
      注意: 不要选中服务端窗口的内容,选中会停止服务,可以敲回车取消选中

3.数据库与集合命令

3.1 数据库命令
  • 显示所有数据库
    show dbs
  • 切换到指定的数据库,如果数据库不存在则会自动创建数据库
    use 数据库名
  • 显示当前所在的数据库
    db
  • 删除当前数据库
    use 数据库名
    db.dropDatabase()
    集合命令:
  • 创建集合
    db.createCollection('world')
  • 显示当前数据库所有集合
    show collections
  • 删除某个集合
    db.集合名.drop()
  • 重命名集合
    db.集合名.renameCollection('新集合名')
3.2 文档命令
  • 插入文档
    ``db.集合名.insert(文档对象)··

  • 查询文档
    db.集合名.find(查询条件) _id是mongodb自动生成的唯一编号,用来唯一标识文档
    图片

  • 更新文档
    db.集合名.update(查询条件,新的文档) 会用新文档直接替代全部旧文档的内容
    在这里插入图片描述
    db.集合名.update({name:'张三'},{$set:{age:33}) 只更新特定属性的值
    在这里插入图片描述

  • 删除文档
    db.集合名.remove(查询条件)

4.mongoose使用

mongoose版本 ^7.6.3

4.1 连接数据库

// mongoose版本 ^7.6.3 ,其他版本可参考mongoose文档 https://mongoose.nodejs.cn/docs/index.html

const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/test') //连接test这个集合,没有test集合则创建test集合
//mongoose.connection.once once 只连接一次
mongoose.connection.on('open',()=>{
    console.log('连接成功');
})

mongoose.connection.on('error',()=>{
    console.log('连接失败');
})

mongoose.connection.on('close',()=>{
    console.log('连接关闭');
})

4.2 创建新文档

const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/test')//连接test这个集合,没有test集合则创建test集合
//mongoose.connection.once once 只连接一次
mongoose.connection.on('open',()=>{
    console.log('连接成功');
    // 创建文档的结构对象
    let BookSchema = new mongoose.Schema({
        name:String,
        age:Number,
        sex:String
    })
    // 创建模型对象,对文档操作的封装对象
    let BookSModel = mongoose.model('books',BookSchema)
    // 新增
    BookSModel.create({
        name:'xiaoming',
        age:23,
        sex:'男'
    }).then(res=>{
        console.log(res);
    }).catch(err=>{
        console.log(err);
    })
})

mongoose.connection.on('error',()=>{
    console.log('连接失败');
})

mongoose.connection.on('close',()=>{
    console.log('连接关闭');
})
4.3 字段类型
类型描述
String字符串
Number数字
Boolean布尔值
Array数组,也可以使用[]来表示
Date日期
BufferBuffer对象
Mixed任意类型,需要使用mongoose.Schema.Types.Mixed指定
ObjectId对象ID,需要使用mongoose.Schema.Types.ObjectId指定
Decimal128高精度数字,需要使用mongoose.Schema.Types.Decimal128指定
4.4 增删改查文档
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/test')
//mongoose.connection.once once 只连接一次
mongoose.connection.on('open', () => {
    console.log('连接成功');

    // 创建文档的结构对象
    let BookSchema = new mongoose.Schema({
        name: String,
        age: Number,
        sex: String,
        is_hot: Boolean,
        arr: Array
    })
    // 创建模型对象,对文档操作的封装对象
    let BookSModel = mongoose.model('noves', BookSchema)
    // 新增
    let data = [
        {
            name: 'xiaoming',
            age: 23,
            sex: '男',
            is_hot: true,
            arr: [
                1, 2, 3
            ]
        }, {
            name: 'xiaobai',
            age: 26,
            sex: '女',
            is_hot: true,
            arr: [
                4, 5
            ]
        }, {
            name: 'xiao1',
            age: 26,
            sex: '女',
            is_hot: false,
            arr: [
                4, 5
            ]
        },
        {
            name: 'xiao2',
            age: 26,
            sex: '女',
            is_hot: false,
            arr: [
                4, 5
            ]
        }
    ]
    BookSModel.insertMany(data).then(res => {
        console.log(res);
    }).catch(err => {
        console.log(err);
    })
    // 删除单条
    // BookSModel.deleteOne({ _id: '657ffc52c123a96ba890ea75'}).then(res=>{
    //     console.log('res--->',res);
    // })
    // 批量删除
    // BookSModel.deleteMany({ age: 23}).then(res=>{
    //     console.log('res--->',res);
    // })

    // 更新文档,更新一条
    // BookSModel.updateOne({name:'xiaobai'},{arr: ['hello']}).then(res=>{
    //     console.log('res--->',res);
    // })
    // 批量更新
    // BookSModel.updateMany({ name:'xiaobai'},{age:18}).then(res=>{
    //     console.log('res--->',res);
    // })

    // 读取文档
    // BookSModel.findOne({ name:'xiao1'}).then(res=>{
    //     console.log('res--->',res);
    // })

    // BookSModel.findById('658001b0d56b0d19db15c768').then(res=>{
    //     console.log('res--->',res);
    // })
    BookSModel.find({arr:['hello']}).then(res=>{
        console.log('res--->',res);
    })
    // BookSModel.find().then(res=>{
    //     console.log('res--->',res);
    // })
})
4.4 条件控制
4.4.1 运算符

在mongodb不能适应< > = 等运算符,需要使用替代符合

  • >使用$gt
  • <使用$lt
  • >=使用$gte
  • <=使用$lte
  • !==使用$ne

示例:

 BookSModel.find({age:{$lt:24}}).then(res=>{
    console.log('res--->',res);
 })
4.4.2 逻辑运算
  • $or逻辑或
  • $and逻辑与

示例:

BookSModel.find({$or:[{name:'xiaoming'},{age:26}]}).then(res=>{
    console.log('res--->',res);
})
4.4.3 正则匹配

可以使用js的正则语法,通过正则可进行模糊查询
示例:

 BookSModel.find({name:/1/}).then(res=>{
      console.log('res--->',res);
 })
4.5 个性化读取
  • 字段筛选
// 字段筛选 0 不要的字段,1 要的字段
    BookSModel.find().select({name:1,age:1,sex:1}).then(res=>{
        console.log('res--->',res);
    })
  • 数据排序
 // 数据排序  1 升序 , -1 降序
    BookSModel.find().sort({age:-1}).then(res=>{
        console.log('res--->',res);
    })
  • 数据截取
 // 数据截取 skip跳过,limit限定
    BookSModel.find().select({name:1,age:1,sex:1}).skip(2).limit(3).then(res=>{
        console.log('res--->',res);
    })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值