MongoDB基本概念

一、数据库
MongoDB中的数据库由一个或多个集合组成,而每一个集合由一个或多个文档组成。在磁盘上,不同的数据库存放在不同的文件中。数据库的命名可以是满足以下条件的UTF-8字符串:
1、不能是空字符(“”)
2、不得含有 / \ . ” * < > : | ? $ \0 ,只能使用ASCII中的字母和数字
3、数据库名区分大小写。建议应全部小写。
4、数据库名最多为64字节。
查看当前的数据库:db;
这里写图片描述
默认是连接到test数据库。

查看本地数据库:show dbs;
这里写图片描述
创建或切换数据库:use database;
当数据库不存在就创建,否则切换指定的数据库。
这里写图片描述
新创建的数据库foo并没有出现,需要在其中插入文档才行。
这里写图片描述

删除当前数据库 db.dropDatabase();
这里写图片描述

特殊意义的数据库:
admin数据库:这是root数据库,与用户的数据库权限有关。
local数据库:这个数据库永远都不可以复制,且一台服务器上的所有本地集合都可以存储在这个数据库中。
config数据库:MongoDB用于分片,分片信息会存储在该数据库上。

命名空间:数据库名+集合名 (db.test)。命名空间的长度不得超过121字节,实际使用中应该小于100字节。

二、集合
集合就是一组文档。集合是动态模式,集合里面的文档可以是各式各样,文档中的键值都可以不同。集合名可以是满足以下条件的UTF-8字符串:
1、集合名不能是空字符串。
2、集合名不能包括空字符
3、集合名不能以“system.”开头,这是系统集合保留的前缀。
4、集合名中不能包括“$”

子集合:为了使组织结构更清晰,可以使用“.”分割的不同命名空间。例如:blog.author,blog.comment.这里的blog集合与它的子集合没有关系。可以将它们看做一个整体。
这里写图片描述
虽然集合中可以存储各式各样的文档,但是应该将同种类型的文档放在一个集合中,方便查询,索引按照集合来定义,也方便创建索引。

如果集合名称中包括保留字或者无效的JavaScript属性名称,那么db.foo就不能正常工作。
假如要访问version集合,不能直接使用db.version,会返回一个方法函数。
这里写图片描述
这里必须使用getCollection()函数。
这里写图片描述

JavaScript属性名称中只能包含字母、数字以及”$”和”_”,且不能以数字开头。如果集合名称包含无效的JavaScript属性名称,也可以使用getCollection()函数。
这里写图片描述
这里写图片描述
另一种访问无效属性名称的方式是 使用变量访问。
在JavaScript中,x.y等于x[‘y’],使用数组访问语法。
对于名字怪异的集合,进行插入数据和访问数据:
这里写图片描述

三、文档
文档是键值对的一个有序集。
文档的键是字符串(不是字符串也可以)。文档中的键可以是满足以下条件的UTF-8字符:
1、键不能含有空字符,这表示键的结尾
2、不能包含保留字符 “.”和”$”。
MongoDB不但区分类型,也区分大小写。文档中不能有重复的键。文档中的键值对是有序的。

四、数据类型
MongoDB的文档与JavaScript中的对象相近,类似于JSON格式。而JSON作为一种简单的数据表示方式。只包括null、布尔、数字、字符串、数组和对象这6种数据类型。它没有日期类型,无法区分浮点数和整数。
MongoDB在此基础上增加了一些数据类型,包括:
1、null,用于表示空值或者不存在的字段
2、布尔型,true和false
3、数值,可以区分浮点数和整数
4、字符串
5、日期,自新纪元以来经过的毫秒数,不存储时区 。{“x”:new Date()}
6、正则表达式 {“x”:/foo/i}
7、数组 ,可包含不同数据类型的元素。 {“x”:[a,b,c]}
8、内嵌文档 {“x”:{“y”:3232}}
9、ObjectId ,是12字节的id,是文档的唯一标示。{“x”:ObjectId()}

五、_id和ObjectId
文档中必须有一个”_id”,这个键的值可以是任何类型,默认是ObjectId对象。确保集合中的文档被唯一标识。

ObjectId采用12字节的存储空间,是一个由24个十六进制数字组成的字符串,每个字节可以存储2个十六进制数字。
这里写图片描述
时间戳:前四个字节,从标准纪元开始,单位为秒。
机器:三个字节,所在主机的唯一标识符,通常是主机名的散列值
PID:2字节,进程标识符
前9字节保证同一秒不同机器的不同进程产生的ObjectId是唯一的。
计数器:后3字节,自动增加的计算器,确保相同进程在同一秒产生不同的ObjectId。一秒钟最多允许每个进程拥有2563个不同的ObjectId。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值