一、基本操作

  1.mongoDB和关系型数据库对比

    对比项      mongoDB      mysql oracle

    表        集合list        二维表

    表的一行数据    文档document    一条记录

    表字段        键key        字段field

    字段值        值value        值value

    主外键        无          PK,FK

    灵活度扩展性      极高        差

    (1)关系型数据表的record必须保证拥有每一个field

    (2)mongoDB的每一个document的key可以不一样

    (3)关系型数据查询使用sql

    (4)mongoDB查询使用内置的find函数--->基于BSON的特出查询工具

  2.shell基本操作

    1)创建一个数据库

      (1)如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。

      MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。当你进入mongoDB后台后,它默认会链接到 test 文档(数据库)

$ cd /usr/local/mongodb/bin
$ ./mongo
MongoDB shell version: 3.0.
connecting to: test
Welcome to the MongoDB shell.

    (2)由于它是一个JavaScript shell,您可以运行一些简单的算术运算:

> +

> +

    (3)现在让我们插入一些简单的数据,并对插入的数据进行检索:

> db.runoob.insert({x:})  #将数字10插入到runoob的x字段中
WriteResult({ "nInserted" : })
> db.runoob.fin()
--28T01::43.790- E QUERY [js] TypeError: db.runoob.fin is not a function :
@(shell)::
> db.runoob.find()      #查找runoob中的数据
{ "_id" : ObjectId("5bd56c8ff277bf4c61e99120"), "x" : }
>

   3.mongoDB概念解析

      SQL术语/概念      MongoDB术语/概念      解释/说明

      database          database          数据库

      table            collection          数据库表/集合

      row              document        数据记录行/文档

      column            fileld          数据字段/域

      index              index          索引

      table joins                        表连接。mon不支持

      primary key          primary key        主键,MongoDB自动将_id 字段设置为主键

    图解:

  4.数据库

    (1) 一个MongoDB可以创建多个数据库。

    (2)MongoDB的默认数据库为"db",该数据库存在于data目录中

    (3)MongoDB的单个实例可以容纳多个独立的数据库,每个都有自己的集合和权限,不同的数据库放在不同的文件中

    (4)"show dbs"可以显示所有的数据库列表

    (5)执行db命令可以显示当前数据库对象或者集合

    (6)使用use命令可以连接到一个指定的数据库

    (7)

  数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。

  不能是空字符串("")。

  不得含有' '(空格)、.、$、/、\和\0 (空字符)。

  应全部小写。

  最多64字节。

  有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。  

  admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。  

  local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

  config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息

  5.文档

     (1)文档是一组键值对(key-value)。MongoDB的文档不需要设置成相同的字段,并且相同的字段不需要有相同的数据类型,这与关系型数据库有很大的区别,也是MongoDB非常突出的特点。

{"site":"www.stone.com","name":"石则祺"}

    (2)RDBMS与mongoDB对应的术语

    RDBMS          MongoDB

    数据库            数据库

    表格              集合

    行               文档

    列                字段

    表联合              嵌入文档

    主键                主键

    (3)文档中的键值对是有序的

    (4)文档中的值不仅可以在双引号里面,而且还可以是其他几种数据类型

    (5)mongoDB区分类型和大小写    

    (6)文档的键是字符串。除了极少数情况外,键值可以使用UTF-8字符

   6.集合

    (1)集合就是MongoDB中的文档组,类似于RDBMS(关系数据库管理系统)中的表格

    (2)集合存在于数据库中,集合没有固定的结构,意味着可在集合汇总插入不同的数据格式和数据类型,但是通常情况下插入的数据都会有一定的关联性,比如可以将不同的数据结构插入到集合中。当第一个文档被插入的时候,集合就会被创建

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"google"}
{"site":"www.shizeqi.com","name":"stone","num":}

  7.合法的集合名

    集合名不能是空字符串""。

    集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。

    集合名不能以"system."开头,这是为系统集合保留的前缀。

    用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

   8.capped collections

Capped collections 就是固定大小的collection。

它有很高的性能以及队列过期的特性(过期按照插入的顺序). 有点和 "RRD" 概念类似。

Capped collections 是高性能自动的维护对象的插入顺序。它非常适合类似记录日志的功能和标准的 collection 不同,你必须要显式的创建一个capped collection,指定一个 collection 的大小,单位是字节。collection 的数据存储空间值提前分配的。

Capped collections 可以按照文档的插入顺序保存到集合中,而且这些文档在磁盘上存放位置也是按照插入顺序来保存的,所以当我们更新Capped collections 中文档的时候,更新后的文档不可以超过之前文档的大小,这样话就可以确保所有文档在磁盘上的位置一直保持不变。

由于 Capped collection 是按照文档的插入顺序而不是使用索引确定插入位置,这样的话可以提高增添数据的效率。MongoDB 的操作日志文件 oplog.rs 就是利用 Capped Collection 来实现的。

要注意的是指定的存储大小包含了数据库的头信息。

db.createCollection("mycoll", {capped:true, size:100000})
  • 在 capped collection 中,你能添加新的对象。
  • 能进行更新,然而,对象不会增加存储空间。如果增加,更新就会失败 。
  • 使用 Capped Collection 不能删除一个文档,可以使用 drop() 方法删除 collection 所有的行。
  • 删除之后,你必须显式的重新创建这个 collection。
  • 在32bit机器中,capped collection 最大存储为 1e9( 1X109)个字节。

    

mongoDB关系型数据库的对比的更多相关文章

  1. MongoDB和关系型数据库简单对比

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB 工作在收集和文件的概念. 数据库:数据库是一个物理容器集合.每个数据库都有自己的一套文件系统上的 ...

  2. redis12-----redis 与关系型数据库的对比

    书和书签系统 create table book ( bookid int, title ) )engine myisam charset utf8; insert into book values ...

  3. MongoDB 关系型数据库表(集合)与表(集合)之间的几种关系

    简述关系数据库中表与表的 3 种关系 一对一的关系:例如:一个人对应一个唯一的身份证号,即为一对一的关系. 一对多关系 :例如:一个班级对应多名学生,一个学生只能属于一个班级,即为一对多关系 多对多关 ...

  4. 数据库基础 非关系型数据库 MongoDB 和 redis

    数据库基础 非关系型数据库 MongoDB 和 redis 1 NoSQL简介 访问量增加,频繁的读写 直接访问(硬盘)物理级别的数据,会很慢 ,关系型数据库的压力会很大 所以,需要内存级的读写操作, ...

  5. MongoDB学习day01--非关系型数据库

    1.数据库和文件的主要区别: 1.1数据库有数据库表/行和列的概念,让我们存储操作数据方便 1.2数据库提供了方便的接口,让java.php..net.nodejs很方便的实现增删改查 2.NoSQL ...

  6. NoSQL,关系型数据库,行列数据库对比、类比

    数据库对比.类比 关系型数据库.NoSQL 关系型数据库 表与表之间有关系.表存储一些格式化的数据结构,每个元组字段的组成都一样,这样便于表之间的联结操作.不过也限制了其性能瓶颈. 更支持SQL,支持 ...

  7. 关系型数据库与Key-value型数据库Mongodb模式设计对比

    MongoDb 相比于传统的 SQL 关系型数据库,最大的不同在于它们的模式设计( Schema Design )上的差别,正是由于这一层次的差别衍生出其它各方面的不同. 我们可以简单的认为关系型数据 ...

  8. MongoDB学习笔记(二:入门环境配置及与关系型数据库区别总结)

    一.下载及安装MongoDB MongoDB下载官网链接:http://www.mongodb.org/downloads 具体安装步骤教程:http://www.shouce.ren/api/vie ...

  9. HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

    最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...

随机推荐

  1. CF543C Remembering Strings 状压dp

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...

  2. 软件工程 in MSRA 第一周博客作业

    1. 自我介绍 大家好-我是陈海峰,哈尔滨工业大学计算机学院的一名大四学生,大四开始在 MSRA 的 KC 组进行实习.作为一个标准的"肥宅",对运动没什么兴趣的我,主要的兴趣点就 ...

  3. windows10 ubuntu子系统 WSL文件位置

    windows10 的linux子系统(windows subsystem for linux)WSL 文件位置 以我的系统为例,WSL的root目录对应windows的: C:\Users\xiao ...

  4. [CSP-S模拟测试]:串串香(KMP)

    题目传送门(内部题75) 输入格式 输入文件$ccx.in$ 每个输入文件包含多组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据 每行一开始,两个空格隔 ...

  5. Mac sublime安装package controller

    https://packagecontrol.io/installation#st2  链接被墙了这个. 我拿来放在这里. The simplest method of installation is ...

  6. 高级软件测试技术(测试管理工具实践day1)

    今天进行了班级内部各小组选择测试工具,选择各自需要进行测试管理工具.我们小组暂定选择 禅道 但是班级内其他小组选择的工具还没确定,还没进行

  7. Understanding RequireJS for Effective JavaScript Module Loading

    Modular programming is used to break large applications into smaller blocks of manageable code. Modu ...

  8. vue2.0 之 douban (四)创建Swipe图片轮播组件

    swiper中文文档:http://www.swiper.com.cn 1.我们在components文件夹里创建一个swipe组件,将需要用到的js以及css文件复制到assets/lib文件夹下, ...

  9. Linux内核调试方法总结之ftrace

    ftrace [用途] ftrace包含一系列跟踪器,用于不同的场合,比如跟踪内核函数调用(function tracer).跟踪上下文切换(sched_switch tracer).查看中断被关闭的 ...

  10. Java实体类之间的映射(一对多关系)

    通过栗子,一个人可以有多辆汽车 定义人   这个类 人可以有很多辆汽车,类中车属性用数组 class Person{ private String name; private String phone ...