概述Mongodb理论和基本操作。
文档型Nosql数据库,可以让你在开发过程中畅顺无比。对于大数据量、高并发、弱事务的互联网应用,可以应对自如。其特性包括动态查询、二级索引(非聚簇索引)、 快速的原子更新和复杂的聚合,还支持基于自动故障转移的复制和用于水平扩展的自动分片。
https://robomongo.org/download
http://www.mongovue.com/downloads/
Mysql | Mongodb | 解释说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
对象ID,每个文档特有,例如:573bf47365981af2c2005789,把他们拆分,分别的语义为
用于创建空值。
字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
布尔值。用于存储布尔值(真/假)。
整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
双精度浮点值。用于存储浮点值。
用于将数组或列表或多个值存储为一个键。
日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
用于内嵌文档。
二进制数据。用于存储二进制数据。
时间戳。记录文档修改或添加的具体时间。
代码类型。用于在文档中存储 JavaScript 代码。
此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
正则表达式类型。用于存储正则表达式。
mongo
use mydb
switched to db mydb
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' |
小于 | { | db.user.find({"sex":{$lt:30}}).pretty() | where sex < 30 |
小于或等于 | { | db.user.find({"sex":{$lte:30}}).pretty() | where sex <= 30 |
大于 | { | db.user.find({"sex":{$gt:20}}).pretty() | where sex > 20 |
大于或等于 | { | db.user.find({"sex":{$gte:20}}).pretty() | where sex >= 20 |
不等于 | { | db.user.find({"sex":{$ne:20}}).pretty() | where sex != 20 |
包含 | { | db.user.find({"$in":{"likes":['dog','Cat']}}).pretty() | where likes IN ('dog', 'cat') |
不包含 | { | db.user.find({"$nin":{"likes":['dog','Cat']}}).pretty() | where likes NOT IN ('dog', 'cat') |