MongoDB学习笔记(1)

安装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":"百度"}

这里有一些基本的术语: 点击打开链接

总结重要的几点:

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

文档键命名规范:

  1. 键不能含有空字符,这个字符表示键的结尾。
  2. .和$有特殊意义,只能在特殊的环境下应用。
  3. 以下划线"_"开头的键是保留的。
集合

集合就是MongoDB文档组。集合存在数据库中没有固定的结构,意味着插入的数据可以是不同格式和类型的数据,但通常情况下插入的数据都具有关联性。

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

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

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

合法的集合名:

  1. 集合名不能是空字符串;
  2. 集合名不能有\0(空字符)
  3. 集合不能以"system"开头,这是为系统集合保留的前缀
  4. 用户创建集合不能含有保留字。
如下实例:
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          正则表达式类型,用于存储正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值