当前位置: 首页 > news >正文

mongodb细讲

一、 关系型数据库(sql)

1.建表

 

 

二、非关系型数据库(nosql  98提出的概念)

1.不用建库建表数据直接存入就可

  

优缺点:

  关系型:节约资源(学生姓名和课程名不重复出现),开发不方便(需先建库建表,外键等)

  非关系型:浪费资源(学生姓名和课程名重复出现),开发方便(不需要建库建表,数据直接存)

  开发常用关系型,爬虫常用非关系型

 

三、Ubuntu安装: sudo apt-get install mongodb

  Centos安装:sudo yum install mongodb

四、mongodb基本操作:

  1.启动:sudo service mongodb start

  2.停止:sudo service mongodb stop

  3.重启:sudo service mongodb restart

  4.进入客户端:mongo

    

    出现上图代表正确进入

  5.退出客户端:exit、ctrl + c

  6.默认端口:27017

  7.默认配置文件位置:/etc/mongod.conf

  8.默认日志位置:/var/log/mongodb/mongod.log

  9.查看帮助命令:mongod -help  (或进入mongo直接 help)

  10.关于database的基本命令:

    a.查看所有的库:show database、  show databases、show dbs

    b.使用一个库:use 库名

    c.查看当前库名:db

    d.切换数据库:use 库名

    e.删除当前数据库:db.dropDatabase()

    f.第一次向数据库中加入数据时,数据库自动创建。

  11.关于集合的基本命令:

    a.不用手动创建集合,向不存在的集合第一次加入数据时,集合会自动创建出来

      

      如图集合会自动创建

    b.手动创建集合:

      db.createCollection('stu')

      db.createCollection(name, options)

      db.createCollection('stu', {capped:true, size:10})

      参数capped:默认为false表示不设置上限,当值为true表示设置上限,参数size当capped为true时,需要指定此参数,表示上限大小,单位为字节,如果数据超过上限,会将之前的数据覆盖。

    c.查看集合:show collections

    d.删除集合:db.集合名.drop()

  12.数据类型:

    ObjectId:文档id

    String 字符串,必须是有效的utf-8

    Boolean   存储一个布尔值    true     false

    Integer 整数    32位或64位取决于服务器

    Double   浮点型

    Arrays    数组,列表,多个值存储到一个键

    Object    一个值就是一个文档

    Null        存储Null值

    Timestamp       时间戳,表示从1970.1.1到现在的总秒数

    Date       存储当前的日期或时间

    ObjectId  是一个12字节的十六进制数,前四个字节是当前的时间戳,接下来三个字节是机器的id,接下来的两个字节是mongodb的服务进程id最后三个字节是简单增量值 

  13.数据插入:

    db.集合名.insert(数据)

    db   指的是本数据库

    集合名   相当于mysql中的表    例:

      

  14.保存:

    db.集合名.save(数据)

    如果_id不存在,则添加数据,如果_id存在,则修改数据

    例:

      

  15.简单查询:

    db.集合名.find()  例:

      

  16.复杂查询:

    比较运算符(等于(默认)、小于($lt)、小于等于($lte)、大于($gt)、大于等于($gte)、不等于($ne))

     例:

      

    逻辑运算符:

      and:直接写多个条件

        

      or:使用 $or,值为一个数组,数组中每个元素为json

        

         组合使用

        

      $in 范围之内

      $nin 不在范围之内

        

  17.排序:

    db.集合名.find().sort({字段:1})   参数1位升序,-1位降序

    升序   db.stu1.find().sort({math:1})

    降序   db.stu1.find().sort({math:-1})

  18.统计个数

    方法count()用于统计结果集中文档条数

    db.集合名.find().count()

    db.集合名.count({条件})

    

  19.消除重复

    方法distinct()对数据进行去重

    db.集合名.distinct('去重字段',{条件})

    例:

      

  20.更新

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

    参数query:查询条件

    参数update:更新操作符

    参数multi:可选,默认值false,表示只更新找到的第一条记录;值为true,表示把满足条件的条件全部更新

    

    可见这样更新有问题,应该这样:

    

    发现这样只会更新一条,若更新全部应:

    

   21.删除

    db.集合名.remove(<query>, {justOne:<boolean>})

    参数query:可选,删除文档条件

    参数justOne:可选,默认为false,表示删除多条;如果设置为true或1,则只删除一条

    

   22.查询结果处理

    查询结果格式化:

      db.集合名.find(条件).pretty()

      

      db.集合名.findOne(条件):只返回第一个结果

    指定文档数量

      方法limit()  用于读取指定数量的文档

        db.集合名.find().limit(number)

      方法skip()  用于跳过指定数量的文档

        db.集合名.find().skip(number)

  23.投影

    在查询的返回结果中,只选择必要字段

      db.集合名.find({}, {字段名1:1,字段名2:1})

      参数为字段名,值1表示显示,值为0表示不显示

      特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

      

 

五、Mongodb聚合aggregate

  聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列处理,输出响应结果。

  常用管道如下:

    $group:将集合重的文档分组,可用于统计结果。

    

    分组依据放在_id后面。

    统计地址,统计每个地址的人数。例:

      

    统计每个地址的平均年龄, 例:

      

    group by null :将集合中所有文档分为一组,例:

       

    $project 修改文档结构,如重命名、增加、删除字段创建计算结构,例:

      

    $match:数据过滤(管道过滤不能用find)

    (年龄大于20的人按名字分组,统计每个地址有多少人)

      

    $sort:将输入文档排序后输出

      

    将数据按姓名分组,统计每个姓名的人数,并按降序排序:

      

    $limit:限制集合管道返回的文档数,db.stu1.aggregate({$limit:2})

    $skip:跳过指定数量的文档,并返回余下文档,db.stu1.aggregate({$skip:2})

      db.stu1.aggregate({$skip:2}, {$limit:2})

    

六、常用表达式

  $sum  计算综和,$sum:1 表示以一倍计数

  $avg   计算平均值

  $min   获取最小值

  $max  获取最大值

 

七、索引:(提高查询速度)(唯一索引、普通索引、联合索引)

  

   创建索引:

    语法:db.集合.ensureIndex({属性:1})      1表示升序,-1代表降序

    查看当前集合所有索引:db.集合.getIndexes()

      

  删除索引:

    db.集合.dropIndex({索引名称:1})

     

  在默认情况下创建 的索引均不是唯一索引

    创建唯一索引:db.集合.ensureIndex({'name':1}, {'unique':true})

    建立联合索引:db.集合.ensureIndex({'math':1, 'age':1})

     

 八、数据库的备份和还原

  备份语法:

    远程备份:

      mongodump -h  dbhost  -d    dbname    -o 路径

                 服务器IP地址        数据库名

      mongodump -h 192.168.1.100:27017 -d   test1   -o  /home/test2

      -h:服务器地址,指定端口号

      -d:需要备份的数据库名称

      -o:备份存放数据的位置,此目录放置备份的数据

    本地备份:

      mongodump -d dbname -o 路径

  还原语法:

    远程还原:

      mongorestore   -h   dbhost   -d    dbname   -o   路径

      -h:服务器地址,指定端口号

      -d:需要备份的数据库名称

      -o:备份数据所在位置

      mongorestore    -h   192.168.1.100:27017 -d test2   -o   /home/abc/day8/studentback/student

    本机还原:

      mongorestore -d   student2   /home/abc/day8/studentback/student

 

转载于:https://www.cnblogs.com/DonCharles/p/9929975.html

相关文章:

  • 在 Java 中初始化 List 的五种方法
  • JS获取浏览器地址栏的多个参数值的任意值实例代码
  • Bootstrap简介
  • Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)
  • 大数据开发技术学习路线图(小白自学心路)
  • python 入门
  • 数组大概知多少
  • linux删除文件夹下除了某一个文件之外的所有文件及find用法
  • 优先队列 PriorityQueue
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 基于Odoo框架的开源在线客服系统
  • 智能合约Solidity教程-事件和日志(一)
  • Springcloud sleuth+kafka+elasticsearch+zipkin
  • python基础:
  • Android漏洞扫描工具Code Arbiter
  • Angular Elements 及其运作原理
  • CSS 专业技巧
  • Java超时控制的实现
  • js正则,这点儿就够用了
  • Linux gpio口使用方法
  • PAT A1120
  • python 装饰器(一)
  • Python利用正则抓取网页内容保存到本地
  • web标准化(下)
  • 聊聊sentinel的DegradeSlot
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 入门到放弃node系列之Hello Word篇
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 关于Android全面屏虚拟导航栏的适配总结
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (10)STL算法之搜索(二) 二分查找
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)Elastix图像配准:3D图像
  • (4)STL算法之比较
  • (floyd+补集) poj 3275
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (pojstep1.1.2)2654(直叙式模拟)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (三)c52学习之旅-点亮LED灯
  • (转载)Linux网络编程入门
  • .NET gRPC 和RESTful简单对比
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET命令行(CLI)常用命令
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Android Pro] Notification的使用
  • [Angular 基础] - 自定义指令,深入学习 directive