mongodb学习之:数据库

首先来介绍下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’}。这和字典的格式是一样的。

文档格式需要注意的是:

  1. 文档中的键/值对是有序的。
  2. 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)
  3. MongoDB区分类型和大小写。
  4. MongoDB的文档不能有重复的键。
  5. 文档的键是字符串。除了少数例外情况,键可以使用任意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

posted @ 2017-12-13 22:20  red_leaf_412  阅读(380)  评论(0编辑  收藏  举报