IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mongodb数据库入门 -> 正文阅读

[大数据]mongodb数据库入门

mongodb数据库入门

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('去重字段',{查询条件})
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:59:18  更:2021-09-03 11:59:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:41:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码