MongoDB——基本操作、数据类型

目录

1. 基本概念

2. 数据库

2.1 查看数据库

2.2 选择数据库

2.3 删除数据库

3. 集合

3.1 查看集合

3.2 创建集合

3.3 删除集合

3.4 capped collections

4. 元数据

5. MongoDB 数据类型


1. 基本概念

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

2. 数据库

2.1 查看数据库

语法:show databases  /  show dbs

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

2.2 选择数据库

语法:use  数据库名

> use admin
switched to db admin
>
> use testDB
switched to db testDB
>

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

> db
testDB

【注】MongoDB 选择不存在的数据库时不会报错,在后期插入数据时自动创建。即:隐式创建

2.3 删除数据库

1. 通过 use 选中数据库

2. 通过 db.dropDatabase() 删除数据库

> use testDB
switched to db testDB
>
> db.dropDatabase()
{ "dropped" : "testDB", "ok" : 1 }
>

 

3. 集合

集合就是 MongoDB 文档组,类似于 RDBMS 中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着可以插入不同格式和类型的数据。

3.1 查看集合

语法:show collections

3.2 创建集合

语法:db.createCollection('集合名')

> db.createCollection('user')
{ "ok" : 1 }
> show collections
user

3.3 删除集合

语法:db.集合名.drop()

> db.user.drop()
true
> show collections
>

3.4 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("myLog",{capped:true,size:10000})
{ "ok" : 1 }
  • 在 capped collection 中,可以添加新的对象。
  • 能进行更新,但对象不会增加存储空间。如果增加,更新就会失败 。
  • 使用 Capped Collection 不能删除一个文档,可以使用 drop() 方法删除 collection 所有的行。
  • 删除之后,你必须显式的重新创建这个 collection。
  • 在32bit机器中,capped collection 最大存储为 1e9( 1X109)个字节。

4. 元数据

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

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}}是可删除的。

5. MongoDB 数据类型

下表为MongoDB中常用的几种数据类型。

数据类型描述举例
null用于表示空值或不存在的字段{"name": null}
布尔型布尔值 true 或 false{"x"  : false}
数值shell 默认使用 64 位浮点型数值{"x"  : 3.14}   、{"x"  : 3}
字符串UTF-8 字符串{"name"  :  “zth”}
日期自新纪元以来经过的毫秒数,不存储时区{"x"  : new Date()}
正则表达式查询时作为限定条件{"name"  :  /foo/i }
数组数据列表或数据集可以表示为数组,可包含不同类型 的元素。{"x"  : ["a","b","c"]
内嵌文档文档可以嵌套其他文档,被嵌套的文档作为父文档的值{"x"  : {"age":18}}
对象id文档的唯一标识,一个 12 字节的ID{"x"  : ObjectId()}
二进制数据任意字节的字符串,保存非 UTF-8 字符的唯一方式 
代码查询和文档中可以包含任意 js 代码{"x"  :  function() { /* …… */ } }

 对于整型值,可以使用 NumberInt 类(4字节带符号整数)或 NumberLong 类(8字节带符号整数)。例:{"x"  : NumberInt(3)}

对于日期类型,在创建日期对象时,应使用 new Date(…),而非 Date(…)。如将构造函数作为函数进行调用(不带 new 的方式)返回的是日期的字符串表示而非日期对象。

ObjectId 占用12字节空间,是一个由24个十六进制数字组成的字符串。组成方式如下:

机器值:通常是机器主机名的散列值

PID:产生 ObjectId 进程的进程标识符 

前 9 字节保证了同一秒钟不同机器不同进程产生的ObjectId是唯一的。最后3字节是一个自动增加的计数器,确保相同进程同一秒产生的ObjectId也是不一样的。一秒钟最多允许每个进程拥有2563 (16 777216)个不同的ObjectId.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值