您的位置:首页 > 数据库 > Mongodb

MongoDB学习笔记(1)

2016-08-04 19:25 176 查看
安装MongoDB参考点击打开链接

一、什么是MongoDB

MongoDB是由C++语言编写的,是一个基于分布式文件储存的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器的性能。

MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)组成,MongoDB文档类似于json对象。字段值可以包含其他文档,数组及文档数据。

通过下图实例可以直观了解一些MongoDB的概念:



数据库

MongoDB的默认数据库是“db”,该数据库存储在data目录中。

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

执行"show dbs"命令可以显示所有数据库的列表

> show dbs
local 0.000GB
>

执行"db"命令可以显示当前数据库对象或集合

> db
test
>

运行"use"命令,可以连接到一个指定的数据库
> use local
switched to db local
> db
local
>
有些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin:这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
confi:当MongoDB用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
文档

文档是一个键值(key-value)对,即BSON。MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别。

一个简单的文档例子:

{"site":"www.baidu.com","name":"百度"}

这里有一些基本的术语:点击打开链接
总结重要的几点:

文档中的键/值都是有序的;
文档中的值不仅可以是双引号里面的字符串,也可以是其他几种数据类型,甚至是整个嵌入的文档;
MongoDB区分类型和大小写;
MongoDB的文档不能有重复的键;
文档的键是字符串。除少数例外,键可以使用任意UTF-8字符。

文档键命名规范:

键不能含有空字符,这个字符表示键的结尾。
.和$有特殊意义,只能在特殊的环境下应用。
以下划线"_"开头的键是保留的。
集合
集合就是MongoDB文档组。集合存在数据库中没有固定的结构,意味着插入的数据可以是不同格式和类型的数据,但通常情况下插入的数据都具有关联性。

比如,我们可以将以下不同数据结构的文档插入到集合中去:

{"site":"www.baidu.com"}
{"site":"www.baidu.com","name":"百度"}
{"site":"www.baidu.com","name":"百度","num":"5"}

当第一个文档插入时,集合就会被创建。
合法的集合名:

集合名不能是空字符串;
集合名不能有\0(空字符)
集合不能以"system"开头,这是为系统集合保留的前缀
用户创建集合不能含有保留字。
如下实例:
db.col.findOne()


capped collections

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

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

db.createCollection("mycoll",{capped:true,size:1000000})
在capped collection中,你能添加新的对象
能进行更新,对象不会增加存储空间。如果增加,更新就会失败
数据库不允许进行删除。使用drop()方法删除collection所有的行
注意:删除之后,你必须显式的重新创建这个collection
在32bit机器中,capped collection最大的存储为1e9(1*10^9)
元数据

数据库的信息存储在集合中。它们使用了系统的命名空间。

dbname.sysytem.*在MongoDB数据库命名空间<dbname>.sysytem.*是包含多种系统信息的特殊集合(collection),如下:
dbname.system.namespaces                 列出所有名字的空间

dbname.system.indexes                         列出所有索引

dbname.system.profile                           包含数据库概要信息

dbname.system.users                            列出所有可访问数据库的用户

dbname.local.sources                            包含复制对端的服务器信息和状态

MongoDB数据类型

String                 字符串。存储数据常用的数据类型。在mongoDB中,UTF-8编码的字符串才是合法的

Integer               整型数值。用于存储数值,根据你所采用的服务器,可分为32位和64位

Boolean             布尔值

Double               双精度浮点值

Min/Max keys    将一个值与BSON(二进制的JSON)元素的最低值和最高值相对比

Arrays                用于将数组或列表或多个值存储为一个键

Timestamp         时间戳。记录文档修改或添加的具体时间

Object                用于内嵌文档

Null                    用于创建空值

Symbol              符号。该数据类型基本上等同于字符串类型,但不同的是,它一般采用特殊符号类型的语言

Date                  日期时间

Object ID           对象ID 用于创建文档的ID

Binary Date       二进制数据,用于存储二进制数据

Code                 代码类型,用于在文档中存储JavaScript代码

Regular expression          正则表达式类型,用于存储正则表达式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb