[转]MongoDB 概念解析

正文转自:http://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

 

任我们上啊数据库都应有学其中的根底概念,在mongodb中挑大梁的概念是文档、集合、数据库,下面我们逐个介绍。

下表将帮你还爱懂Mongo中的一些定义:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

透过下图实例,我们也可以再直观的之刺探Mongo中的有些定义:

Oracle 1


数据库

一个mongodb中得建立多个数据库。

MongoDB的默认数据库也”db”,该数据库存储于data目录中。

MongoDB的么实例可以容纳多单单身的数据库,每一个还发生投机的成团和权限,不同之数据库也放于不同之文件被。

“show dbs” 命令可以显得所有数据的列表。

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> show dbs
local  0.078GB
test   0.078GB
>

执行 “db” 命令可以来得当前数据库对象要集合。

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> db
test
>

运行”use”命令,可以连接至一个点名的数据库。

> use local
switched to db local
> db
local
>

如上实例命令中,”local” 是你要链接的数据库。

在产一个章我们拿详细讲解MongoDB中命令的采用。

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

  • 不能够是空字符串(””)。
  • 不可含有’ ‘(空格)、.、$、/、\和\0 (空宇符)。
  • 承诺全部大写。
  • 最多64字节。

起局部数据库名是保留的,可以一直看这些有特殊作用的数据库。

  • admin
    从权力的角度来拘禁,这是”root”数据库。要是以一个用户增长到者数据库,这个用户自动连续所有数据库的权。一些一定的劳务器端命令也不得不从者数据库运行,比如列出所有的数据库或者关闭服务器。
  • local:
    这个数永远不见面被复制,可以用来囤限于本地单台服务器的擅自集合
  • config:
    当Mongo用于分片设置时,config数据库在里使用,用于保存分片的系信息。

文档

文档是平等组键值(key-value)对(即BSON)。MongoDB
的文档不需安装同样的字段,并且相同的字段不待平等之数据类型,这跟涉及项目数据库有那个可怜的区别,也是
MongoDB 非常突出的特征。

一个简易的文档例子如下:

{"site":"www.runoob.com", "name":"菜鸟教程"}

下表列有了 RDBMS 与 MongoDB 对应之术语:

RDBMS

MongoDB

数据库

数据库

表格

集合

文档

字段

表联合

嵌入文档

主键

主键 (MongoDB 提供了 key  为 _id )

数据库服务和客户端

Mysqld/Oracle

mongod

mysql/sqlplus

mongo

待专注的是:

  1. 文档中的键/值对凡稳步的。
  2. 文档中之值不仅可是以双引号里面的字符串,还足以是其他几种多少列(甚至足以是一切嵌入的文档)。
  3. MongoDB区分类型和分寸写。
  4. MongoDB的文档不克发再度的键。
  5. 文档的键是字符串。除了个别例外情况,键可以用任意UTF-8字符。

文档键命名规范:

  • 键不能够含有\0 (空字符)。这个字符用来表示键的尾声。
  • .和$有特别的意义,只有当一定条件下才会使。
  • 以下划线”_”开头的键是保留的(不是严格要求的)。

集合

会合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理体系:Relational
Database Management System)中之表格。

集结有为数据库被,集合没有一贯的组织,这意味着你以对聚集好插不同格式和种类的数,但一般状态下我们插入集合的数目还见面时有发生一定之关联性。

 

照,我们可以以下两样数据结构的文档插入到集中:

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}

当第一个文档插入时,集合就会被创造。

合法的集合名

  • 集合名不能够是空字符串””。
  • 集合名不克含有\0字符(空字符),这个字符表示集合名的最后。
  • 集合名不克因”system.”开头,这是也系统集结保留的前缀。
  • 用户创建的成团名字不能够含有保留字符。有些驱动程序的确支持于集合名里面富含,这是因一些系统生成的集合中含该字符。除非您而拜这种系统创造的会师,否则千万不要以名字里涌出$。 

如下实例:

db.col.findOne()

capped collections

Capped collections 就是稳大小的collection。

它们来酷高之性能与队列过期的性状(过期仍插入的一一). 有点和 “RRD”
概念类似。

Capped
collections是大性能自动的保安对象的插顺序。它非常适合类似记录日志的功用
和业内的collection不同,你要要显式的创一个capped collection,
指定一个collection的轻重缓急,单位凡字节。collection的多寡存储空间值提前分配的。

 

倘专注的凡指定的贮存大小包含了数据库的峰信息。

 

db.createCollection("mycoll", {capped:true, size:100000})
  • 以capped collection中,你可知补加新的靶子。
  • 能够开展更新,然而,对象不见面追加存储空间。如果多,更新就会失败 。
  • 数据库不容许开展去。使用drop()方法去collection所有的实行。
  • 小心: 删除后,你得显式的复创设是collection。
  • 以32bit机器Oracle中,capped collection最老存储吗1e9(
    1X109)个字节。

元数据

数据库的音讯是储存在集合中。它们运了系统的命名空间:

dbname.system.*

以MongoDB数据库被名字空间 <dbname>.system.*
是包含多系统信息之特别集合(Collection),如下:

集合命名空间 描述
dbname.system.namespaces 列出所有名字空间。
dbname.system.indexes 列出所有索引。
dbname.system.profile 包含数据库概要(profile)信息。
dbname.system.users 列出所有可访问数据库的用户。
dbname.local.sources 包含复制对端(slave)的服务器信息和状态。

于修改系统集结中之对象来如下限制。

在{{system.indexes}}插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop
index命令将自动更新相关消息)。

{{system.users}}是不过改的。 {{system.profile}}是可去的。


MongoDB 数据类型

下表为MongoDB中常用之几种多少列。

数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。  
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。 
Boolean 布尔值。用于存储布尔值(真/假)。 
Double 双精度浮点值。用于存储浮点值。 
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。 
Arrays 用于将数组或列表或多个值存储为一个键。 
Timestamp 时间戳。记录文档修改或添加的具体时间。 
Object 用于内嵌文档。 
Null 用于创建空值。 
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。 
Object ID 对象 ID。用于创建文档的 ID。 
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

相关文章