Home »  Mongodb » Mongodb基础

第二部分 Mongodb-基础

概述Mongodb理论和基本操作。

一、为复杂应用而生的数据库

文档型Nosql数据库,可以让你在开发过程中畅顺无比。对于大数据量、高并发、弱事务的互联网应用,可以应对自如。其特性包括动态查询、二级索引(非聚簇索引)、 快速的原子更新和复杂的聚合,还支持基于自动故障转移的复制和用于水平扩展的自动分片。

最流行发展最快的分布式数据库

三大技术特色

文档模型的特点

二、使用案例

行业内

启业云

下面的场景要说No

三、常用GUI管理工具

Robomongo

https://robomongo.org/download

MongoVUE

http://www.mongovue.com/downloads/

四、对比Mysql

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

五、数据类型

Object ID

对象ID,每个文档特有,例如:573bf47365981af2c2005789,把他们拆分,分别的语义为

null

用于创建空值。

String

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

Boolean

布尔值。用于存储布尔值(真/假)。

Integer

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

Double

双精度浮点值。用于存储浮点值。

Arrays

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

Date

日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。

Object

用于内嵌文档。

Binary Data

二进制数据。用于存储二进制数据。

Timestamp

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

Code

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

Symbol

此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。

Regular expression

正则表达式类型。用于存储正则表达式。

命令行 - javascript shell

mongo

六、常用操作

创建数据库

创建一个名字为mydb的数据库,语义如下

use mydb
switched to db mydb

使用db检查当前选定数据库

db
mydb

使用命令show dbs来检查数据库列表

show dbs
local     0.78125GB
test      0.23012GB

删除数据库

如果你想删除刚刚创建的mydb数据库

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

创建集合

语法格式

db.createCollection(name, options)

在该命令中,name 是所要创建的集合名称。options 是一个用来指定集合配置的文档。

参数 类型 描述
name 字符串 所要创建的集合名称
options 文档 可选。指定有关内存大小及索引的选项

参数 options 是可选的,所以你必须指定的只有集合名称。下表列出了所有可用选项:

字段 类型 描述
capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
autoIndexID 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size 数值 (可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
max 数值 (可选)指定固定集合中包含文档的最大数量

范例

不带参数的

use test
switched to db test
db.createCollection("user")
{ "ok" : 1 }

带参数的

db.createCollection("user", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }

删除集合

语法格式

db.COLLECTION_NAME.drop()

范例

 use mydb
 db.user.drop()

新增

语法格式

db.COLLECTION_NAME.insert(document)

范例

一条

db.user.insert({name:'mtao', sex:'boy', age:20})

多条

db.user.insert([{name:'tom', sex:'boy', age:30}, {name:'allen', sex:'girl',age:45}])

修改

语法格式

db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

范例

只更新单条

db.user.update({title:'mtao'},{'$set':{age:33}})

更新多条

db.user.update({title:'mtao'},{'$set':{sex:'boy'}},{multi:true})

查询

语法格式

db.COLLECTION_NAME.find()

如果你想使用pretty方法

db.COLLECTION_NAME.find().pretty()

范例

显示所有

db.user.find()

简单的条件查询

操作 格式 范例 RDBMS/Mysql中的类似语句
等于 {:} db.user.find({"name":"mtao"}).pretty()where name = 'mtao'
小于 {:{$lt:}} db.user.find({"sex":{$lt:30}}).pretty() where sex < 30
小于或等于 {:{$lte:}} db.user.find({"sex":{$lte:30}}).pretty() where sex <= 30
大于 {:{$gt:}} db.user.find({"sex":{$gt:20}}).pretty() where sex > 20
大于或等于 {:{$gte:}} db.user.find({"sex":{$gte:20}}).pretty() where sex >= 20
不等于 {:{$ne:}} db.user.find({"sex":{$ne:20}}).pretty() where sex != 20
包含 {:{$in:}} db.user.find({"$in":{"likes":['dog','Cat']}}).pretty() where likes IN ('dog', 'cat')
不包含 {:{$in:}} db.user.find({"$nin":{"likes":['dog','Cat']}}).pretty() where likes NOT IN ('dog', 'cat')

注意事项