zoukankan      html  css  js  c++  java
  • MongoDB的使用

    3.1简介

    3.1.1数据库(database)

    数据库是一个仓库,在仓库中可以存放集合。

    1.数据库介绍
    电脑核心:CPU(中央处理器)
    电脑具有存储数据功能的地方:
    1.CPU的三级缓存(10MB)
    2.GPU的显存(2-8G) DDR5
    3.内存(8-32G) DDR4
    4.硬盘(机械硬盘512G->2T,固态硬盘128-512G)
    
    内存
    1.断电清空(临时存储)
    2.速度较快
    3.成本高,容量较小
    
    
    硬盘
    1.断电也有(持久化存储)
    2.速度较慢
    3.成本较低,容量较大
    
    
    关系型数据库VS非关系型数据库
    关系型数据库
    1.数据存储于硬盘,并且每次都对硬盘进行读写(I/O)
    2.可以使用SQL语句
    3.存储数据的类型:基本数据类型
    4.集合字段名不可以后期新增,集合结构不可以改变(后期维护轻松)
    
    非关系型数据库
    1.数据长期存储于内存,每隔一段时间将数据统一存储到硬盘,对内存进行(I/O)
    2.不能使用SQL语句
    3.存储数据的类型:复杂数据类型
    4.集合字段名可以后期新增,集合结构可以改变(后期维护困难)

    3.1.2集合(collection)

    集合类似于JS中的数组,在集合中可以存放文档。

    说白了,集合就是一组文档。

    3.1.3文档(document)

    文档数据库中的最小单位,我们存储和操作的内容都是文档。

    类似于JS中的对象,在MongoDB中每一条数据都是一个文档。

     

    3.2使用

    3.2.1 基本命令

    1)       显示所有的数据库

    show dbs

             show databases

    2)       切换到指定的数据库

    use 数据库名

    3)       显示当前所在的数据库信息

             db.stats()

    4)       删除当前数据库

    db.dropDatabase()

    5)       显示当前数据库中的所有集合

    show collections

    6)       删除当前集合

    db.collection.drop()

    数据库的CRUD(增删改查)

    查询网址:  https://docs.mongodb.com/manual/reference/method/js-collection/

    1)       向集合中插入文档(create)

    db.collection.insert()       向集合中插入一个或多个文档

    2)       查询集合中的文档(read)

    db.collection.find(查询条件)          查询集合中所有符合条件的文档,总是会返回一个数组个文档对象

     在命令行输入以下命令

    MongoDB的CRUD
    
    C -> 添加 create
    语法:db.collections.insert(需要插入的数据)
    
    1.db代表的是当前数据库对象
    2.collections代表是需要操作的集合名称
    3.需要插入的数据类型:对象或者数组
    db.students.insert({name:"小王",age:24})
    
    R ->查询 read
    语法:db.collections.find(查询条件,投影条件)
    db.students.find({age:24}) -> 查询当前集合中age值为24的所有的文档对象
    
    语法:db.collections.findOne(查询条件,投影条件)
    db.students.findOne({age:24}) -> 查询当前集合中age值为24的第一个文档对象
    
    
    1.比较运算符
    大于($gt) 大于等于($gte) 小于($lt) 小于等于($lte) 不等于($ne)
    
    db.students.find({age:{$lt:24}}) -> 查找age值小于24的文档对象(不包含)
    
    db.students.find({age:{$lte:24}}) -> 查找age值小于等于24的文档对象(包含)
    
    
    2.多条件匹配
    $in -> 某字段值具有多种情况,满足任意一种即可
    db.students.find({age:{$in:[24,26]}}) -> 查找age值等于24或者26的文档对象
    
    $nin -> 与$in相反
    db.students.find({age:{$nin:[24,26]}}) ->查找age值不等于24或者26的文档对象
    
    $or -> 多个字段值具有多种情况,满足任意一种即可
    db.students.find({$or:[{age:24},{name:"小明"}]}) -> 查找age值等于24或者name值为小明的文档对象
    
    $type -> 查找某字段值符合输入的类型的文档对象
    db.students.find({age:{$type:"double"}}) -> 查找age值类型为Double的文档对象
    
    $where -> 函数返回值为true的文档对象
    db.students.find({$where:function(){return this.name==="小王八"||this.age===24}}) ->  查找name值等于小王八或者age值为24的文档对象
    
    3.模糊匹配
    正则表达式 ->db.students.find({name:/王/})->查找name值中有王的文档对象
    
    4.排序
    sort -> db.students.find().sort({age:1})->将查询结果已升序输出     1为升序,-1为降序
    
    5.投影
    语法:db.collections.find(查询条件,投影条件)
    db.students.find({},{name:1})
    
    db.students.find({},{_id:0,age:0})
    
    db.students.find({},{name:1,age:0})
    
    
    U -> update 更新


    1.修饰符
    $set->修改文档对象->db.students.updateOne({name:"小绿"},{$set:{age:1.3}})->找到name值为小绿的文档对象,并将他的age值修改为1.3
    
    $inc->对某字段值进行增加->db.students.updateMany({},{$inc:{age:1}})->将所有文档对象的age值增加1
    
    $rename->修改字段名->db.students.updateMany({},{$rename:{"name":"studentName"}})->将所有文档对象的字段名name改为studentName
    
    语法:db.collections.updateOne(查询条件,修改对象)
    db.students.updateOne({name:"小绿"},{$set:{age:1.3}})
    
    
    语法:db.collections.updateMany(查询条件,修改对象)
    db.students.updateMany({},{$inc:{age:1}})   每个文档字段的age加1岁
    
    语法:db.collections.update(查询条件,修改对象,配置对象)
    upsert true代表没找到符合条件的文档对象,就新增一条文档对象 false相反,不插入
    
    db.students.update({age:38},{$set:{name:"老王"}},{upsert:true})
    
    multi  true相当于updateMany,false相当于updateOne
    
    db.students.update({studentName:/王/},{$set:{age:26}},{multi:true})
    
    
    
    D -> delete 删除
    db.collections.remove(查询条件对象)
    db.students.remove({name:"老王"})
    
    软删除(update)
               给所有文档记录都添加一个字段(isDeleted),用于标记当前该条文档记录是否应该被删除
  • 相关阅读:
    java 随机流
    java 缓冲流
    java 文件字符输入、输出流
    【JMeter4.0】之 “jdk1.8、JMeter4.0” 安装与配置以及JMeter永久汉化和更改界面背景、并附加附录:个人学习总结
    【Selenium + Python】自动化测试之发送邮件正文以及附件同时发送
    【Mysql】之视图操作
    【Mysql】Navicat For Mysql快捷键
    【Axure插件】之浏览器打开失败
    【Mysql】之基础sql语句模板
    C语言中malloc、free和new、delete的用法和区别
  • 原文地址:https://www.cnblogs.com/fsg6/p/13603453.html
Copyright © 2011-2022 走看看