• mongoDB数据库


    MongoDB概述

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

    它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
    推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

    NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

    NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

    安装和启动

    下载安装


    MongoDB Community Download | MongoDB

     安装完成后添加到系统环境变量

    将bin目录所在位置配置为环境变量

    C:\Program Files\MongoDB\Server\5.0\bin

    在cmd中输入mongod出现信息则安装成功

    mongodb默认的端口:27017

    浏览器打开http://localhost:27017/

     

    代表 mongodb服务已经启动了

    在服务也能看到

    安装MongoDB图形化界面

    https://studio3t.com/download

    使用

    基本使用

    show dbs 或show databases
    查看所有的数据库
    use xxx
    切换到指定的数据库
    db
    查看当前操作的数据库
    show collections
    查看当前数据库中所有的集合

     数据库的CRUD操作

    db表示的是当前操作的数据库
    collectionName表示操作的集合,若没有,则会自动创建

    插入的文档如果没有手动提供_id属性,则会自动创建一个

    插入多条数据

    插入数据

    插入一条数据

    db.collectionName.insertOne( {name:'cxk',like:['唱','跳','rap','篮球']} )
    

    插入多条数据

    用数组放入一个个对象

    1. db.collectionName.insertMany( [
    2. {name:'cxk',like:['唱','跳','rap','篮球']},
    3. {{name:'wyf',like:'踩缝纫机'}}
    4. ] )

    可以插入一个或多个

    db.collectionName.insert()
    

    查询数据

    db.collectionName.find()
    

    查询集合所有的文档,即所有的数据。
    查询到的是整个数组对象。在最外层是有一个对象包裹起来的。

    条件查询

    db.collectionName.find({name:"蔡徐坤"})

    结果返回的是一个【数组】,可以在后面直接取索引下标

    查找第一个

    db.collectionName.findOne() 
    

    返回的是查询到的对象数组中的第一个对象(返回的是对象)

    查询文档个数

    db.collectionName.count

    查询操作符的使用

    比较操作符
    $gt 大于
    $gte 大于等于
    $lt 小于
    $lte 小于等于
    $ne 不等于
    $eq 等于的另一种写法
    $or 或者

    1. // 大于200
    2. db.users.find({num:{$gt:200}})
    3. // 大于200且小于300
    4. db.users.find({num:{$gt:200,$lt:300}})
    5. //大于300或小于200
    6. db.users.find(
    7. {
    8. $or:[
    9. {num:{$gt:300}},
    10. {num:{$lt:200}}
    11. ]
    12. }
    13. )

    分页查询

    1. db.users.find().limit(10) // 前10条数据
    2. db.users.find().skip(10).limit(10) // 跳过前10条数据,即查询的是第11-20条数据

    排序

    find查询结果默认是id升序排序查询的

    skip,limit,sort可以以任意的顺序调用,最终的结果都是先调sort,再调skip,最后调limit

    1. // 1表示升序排列,-1表示降序排列
    2. db.my.find().sort({_id:1})
    3. // 先按照_id升序排列,如果遇到相同的_id,则按count降序排列
    4. db.my.find().sort({_id:1,count:-1})
    5. db.my.find().skip(10).limit(10).sort({_id:1,count:-1})

    修改数据

    替换整个文档

    db.collectionName.update(condiction,newDocument)
    

    修改对应的属性,需要用到修改操作符,比如$set,$unset,$push,$addToSet $pop 

    1. db.collectionName.update(
    2. {_id:1}, // 查询条件
    3. {
    4. // 修改对应的属性
    5. $set:{
    6. name:'wyf',
    7. like:'大碗宽面'
    8. }
    9. // 删除对应的[属性]
    10. $unset:{
    11. life:1 //这里的1可以随便改为其他的值,无影响
    12. }
    13. }
    14. )

    update默认与updateOne()等效,即对于匹配到的文档只更改其中的第一个
    updateMany()可以用来更改匹配到的所有文档

    1. db.students.updateMany(
    2. {name:'cxk'},
    3. {
    4. $set:{
    5. age:25,
    6. like:''背带裤
    7. }
    8. }
    9. )

    向数组中添加数据$push

    1. db.users.update({name:'蔡徐坤'},{$push:{"song":'鸡你太美'}})
    2. // 如果数据已经存在,则不会添加
    3. db.users.update({name:'yk'},{$addToSet:{"song":'鸡你太美'}})

    自增自减操作符$inc

    1. // 让num自增1
    2. {$inc:{num:1}}
    3. // 让num自减1
    4. {$inc:{num:-1}}
    5. // 给工资低于1000的员工增加400的工资
    6. db.emp.updateMany({sal:{$lt:1000}},{$inc:{sal:400}})

    删除数据

    db.collectionName.remove() 
    

    remove默认会删除所有匹配的文档。相当于deleteMany()
    remove可以加第二个参数,表示只删除匹配到的第一个文档。此时相当于deleteOne()

    db.my.remove({name:'蔡徐坤',true})
    
    1. db.collectionName.deleteOne()
    2. db.collectionName.deleteMany()

    删除所有数据

    db.my.remove({})
    

    删除集合

    db.my.drop()
    

    删除数据库

    db.dropDatabase()
    

    注意:删除某一个文档的属性,应该用update。
    remove以及delete系列删除的是整个文档

  • 相关阅读:
    .NET Core 中插件式开发实现
    模拟电子技术(五)放大电路中的反馈
    top-k问题详解——通过堆解决高频面试题
    ROS学习(26)动态参数配置
    【动手学深度学习】3 Softmax 回归 + 损失函数
    大学物理(上)-期末知识点结合习题复习(3)——质点运动学-惯性系 非惯性系 惯性力 动量定理 动量守恒定律
    电脑重装系统 win11 怎么关闭系统软件通知
    【Linux】多线程互斥与同步
    【SpringBoot】一文了解SpringBoot热部署
    Python|OpenCV-如何给目标图像添加边框(7)
  • 原文地址:https://blog.csdn.net/qq_60587956/article/details/126206355