首先来介绍下Mongodb的基本概念:
左边一列是关系数据库的术语,右边这一列是NOSQL也就是mongodb的术语
database: database 数据库
table: collection 数据库表/集合
row: document 数据记录行/文档
coloum: field 数据字段/域
index: index 索引
table joins: 表连接,Mongodb不支持
primary key: primay key 主键,Mongodb自动将id设为主键
首先来看数据库的概念,进入mongo后用show dbs可以查看当前所有的数据列表:此时刚安装好只有admin和local两个数据库
> show dbs
admin 0.000GB
local 0.000GB
use命令选择需要使用的数据库。
> use admin
switched to db admin
如果我们想创建自己的一个数据库也可以使用use命令。可以看到新建的数据库再用show dbs的时候是无法观察到的。这需要我们插入数据
> use maple
switched to db maple
> show dbs
admin 0.000GB
local 0.000GB
> db
maple
在插入数据前需要介绍文档和集合的概念:
文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。一个文档的例子:{‘name’:’zhf’}。这和字典的格式是一样的。
文档格式需要注意的是:
- 文档中的键/值对是有序的。
- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
- MongoDB区分类型和大小写。
- MongoDB的文档不能有重复的键。
- 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
文档键命名规范:
- 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
- .和$有特别的意义,只有在特定环境下才能使用。
- 以下划线"_"开头的键是保留的(不是严格要求的)。
集合:
集合就是 MongoDB 文档组,前面我们介绍术语的时候集合对应着关系数据库的table也就是表格。而文档对应关系数据库的行。因此集合可以看做是文档的集合。集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。比如,我们可以将以下不同数据结构的文档插入到集合中:
{‘name’:’zhf’}
{‘name’:’zhf’,’city’:’chengdu’}
{‘name’:’zhf’,’city’:’chengdu’,’age’:30}
从这可以看出,相比与关系数据库中的数据,mongodb的数据结构更加随意。不要求每行的数据类型都一样。
集合的命令规范
- 集合名不能是空字符串""。
- 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
- 集合名不能以"system."开头,这是为系统集合保留的前缀。
- 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。
介绍完文档和集合,我们就来向数据库中插入一组数据。插入后通过show dbs就可以找到我们的数据库了
> db.maple.insert({"name":"zhf"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
local 0.000GB
maple 0.000GB
前面db.maple.insert()命令其实是在maple数据库中的maple集合插入了一个文档{“name”:”zhf”}
通过db.集合名.find()的方式就可以查询到集合的内容
> db.maple.find()
{ "_id" : ObjectId("5a3133be956c5a2e19343140"), "name" : "zhf" }
使用show collections的方式就可以列出所有存在的集合。
> show collections
maple
如果要删除集合,使用db.集合名.drop()的方式
> db.maple.drop()
true
> show collections
如果要删除数据库。采用db.dropDatabase()命令
> db.dropDatabase()
{ "dropped" : "maple", "ok" : 1 }
> show dbs
admin 0.000GB
local 0.000GB