mongodb数据库入门

mongodb数据库入门

一般而言通过mongodb数据库入门就可以简单使用了
mongodb进阶https://blog.csdn.net/qq_40846669/article/details/120085015.

1. mongod介绍

  • mongodb是一种NoSQL数据库,目前NoSQL数据库种类繁多, 但是⼀个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系。
  • mongodb的优势
    • 易扩展
    • 大数据量、高性能
    • 灵活的数据模型,不再需要事先建立数据字段

2. mongodb安装

Windows: https://blog.csdn.net/qq_40846669/article/details/120050948.

Linux(ubuntu): https://blog.csdn.net/qq_40846669/article/details/120059229.

3. mongodb基本操作

3.1 数据库操作 【增删改查数据库】

  • 查看所有数据库
    • show dbs或者使用show databases

image-20210902133630952

  • 进入具体数据库(新建数据库)

    • 新建数据库和进入具体数据库命令一样,但是新建之后show dbs 不能直接看到,需要向新数据插入数据才能看到

    • use 数据库名

      image-20210902133933302

  • 查看当前所在数据库

    • db

      image-20210902134020809

  • 删除当前数据库

    • db.dropDatabase() 这里db指当前使用的数据库,即删除当前使用数据库
  • 清空终端

    • cls

3.2 数据集合操作

  • 查看数据集合

    • show collections

      image-20210902134939526

  • 删除数据集合

    • db.数据名.drop()

      image-20210902135335796

  • 添加数据集合

    • 自动创建集合:向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来
    • 手动创建结合:创建格式db.createCollection(name,options)
      • name:集合名字
      • options:集合的参数,可以不指定
      • 这里的capped参数表示是否指定上限大小,size指定大小,如果存储内容超过上限则会覆盖
      • image-20210902135705582

3.3 数据类型

Mongodb的数据类型

类型含义
Object ID⽂档ID
String字符串, 最常⽤, 必须是有效的UTF-8
Boolean存储⼀个布尔值, true或false
Integer整数可以是32位或64位, 这取决于服务器
Double存储浮点值
Arrays数组或列表, 多个值存储到⼀个键
Object⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
Null存储Null值
Timestamp时间戳
Date存储当前⽇期或时间的UNIX时间格式

扩展

  • 在mongodb中,每个⽂档都有⼀个属性, 为_id, 保证每个⽂档的唯⼀性。
  • 可以⾃⼰去设置id插⼊⽂档,如果没有提供, 那么MongoDB为每个⽂档提供了⼀个独特的id, 类型为objectID
  • objectID的组成
    • 前4个字节为当前时间戳
    • 接下来3个字节的机器ID
    • 接下来的2个字节中MongoDB的服务进程id
    • 最后3个字节是简单的增量值

3.4 数据操作【插入,简单查询,更新,删除】

  • 插入和简单的数据查询操作
    • 如果使用的集合不存在则会自动创建
    • db.集合名.insert()
    • db.集合名.find()
    • 如果插入相同id的数据则或报错

image-20210902150536009

  • 如果使用命令db.集合名.save()

    • 如果存在相同id会更新
    • 否则插入
  • 更新操作

    • db.集合名.update(<query> ,<update>,{multi: <boolean>})

      • 参数query:查询条件
      • 参数update:更新操作符
      • 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
    • 将查询到的第一条name:"xiaohong"的数据替换为name:“lisi”

      • 这会让原本存在的age:15消失

      • image-20210902151457128

      • 只替换某一个键,需要添加**$set** (常用操作方式

      • image-20210902152007899

  • 删除操作

    • db.集合名称.remove(<query>,{justOne: <boolean>})
      • 参数query:可选,查询条件
      • 参数justOne:可选, 如果设为true, 则只删除⼀条, 默认false, 表示删除多条
    • 将所有name="zhangsan"的数据都删除
      • image-20210902153507198

4. mongodb条件数据查询

数据查询方法db.集合名.find()

  • 条件查询

    • db.集合名.find({查询条件})

      • db.集合名.find({查询条件}).pretty(),将查询结果格式化
    • db.集合名.findOne({c查询条件}),返回查询到的第一个结果并将其格式化

      • 单个查询不支持pretty()
    • 如下,查name=zhansgan的人

      image-20210902164857530

  • 带有运算符的条件查询

    • 比较运算符

      • 符号含义
        =默认是等于判断, 没有运算符
        $lt小于
        $lte⼩于等于
        $gt⼤于
        $gte⼤于等于
        $ne不等于
      • 举例,查找年龄大于18岁的人db.test10.find({age:{$gte:18}})

        image-20210902165805387

    • 范围运算符

      • 符号含义
        $in在范围内, 值为数组
        $nin不在范围内, 值为数组
      • 举例,查找年龄是20、21、的人db.test10.find({age:{$in:[20, 21,22]}})

        image-20210902170216998

    • 逻辑运算符

      • 符号含义
        条件1, 条件2与,多个条件同时满足
        $or或,满足其中一个条件,值为数组
      • 举例,①查询name=zhangsan且age=18的人,②查询name=wangwu或name=lisi的人

        image-20210902171302334

  • 使用正则表达式

    • 举例, 查询名字以zhang开头的人,两种写法
      • ①使用/表达式/字符串不再加“”db.test10.find({name:/^zhang/})
      • KaTeX parse error: Expected '}', got 'EOF' at end of input: …10.find({name:{regex:"^zhang"}})`
      • image-20210902172002151
  • limit和skip

    • limit(n),与mysql类似,查询n条信息
    • skip(n),跳过n条信息
    • limit(n).skip(m)效果与skip(m).limit(n)相同,都是跳过m条再查询n条
    • image-20210902172515967
  • 投影

    • db.集合名称.find({},{字段名:1,...})
    • 将想显示的字段写上并加:1
      • id默认显示,_id:0可以不显示id,
    • 举例显示name,显示name但不显示id
      • db.test10.find({},{name:1})db.test10.find({},{name:1,_id:0})
      • 注意第一个{}必须有
      • image-20210902215310765
  • 排序

    • db.集合名称.find().sort({字段:1,...})
      • 字段:1,按字段升序排列。
      • 字段:-1,按字段降序排列
    • 举例按age升序排列,
      • db.test10.find().sort({age:1})
      • image-20210902215540308
  • 计数

    • db.集合名.find({查询条件}).count()
  • 消除重复

    • db.集合名.distinct('去重字段',{查询条件})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NoSQL 简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。 在现代的计算系统上每天网络上都会产生庞大的数据量。 这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。 1970年 E.F.Codd's提出的关系 模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程 更加简单。 通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数 据存储在网络和商务应用的主导技术。 NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥 护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新 的思维的注入。 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里 的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账 户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100 元。 2、C (Consistency) 一致性 一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一 致性约束。 例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足 a+b=10,否则事务失败。 3、I (Isolation) 独立性 所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修 改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。 比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。 4、D (Durability) 持久性 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。 分布式系统 分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广 域网)组成。 分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和 透明性。 因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。 分布式系统可以应用在在不同的平台上如:Pc、工作站、局域网和广域网上等。 分布式计算的优点 可靠性(容错) : 分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。 可扩展性: 在分布式计算系统可以根据需要增加更多的机器。 资源共享: 共享数据是必不可少的应用,如银行,预订系统。 灵活性: 由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。 更快的速度: 分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。 开放系统: 由于它是开放的系统,本地或者远程都可以访问到该服务。 更高的性能: 相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。 分布式计算的缺点 故障排除: :故障排除和诊断问题。 软件: 更少的软件支持是分布式计算系统的主要缺点。 网络: 网络基础设施的问题,包括:传输问题,高负载,信息丢失等。 安全性: 开发系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。 什么是NoSQL? NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系 型数据库数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。 这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 为什么使用NoSQL ? 今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人 信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户 数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的 数据。 实例社会化关系网: Each record: UserID1, UserID2 Separate records

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇者lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值