MongoDB之学习【三】:MongoDB的体系结构

1、逻辑关系的对比

关系型数据库:mysql数据库(database)、表(table)、记录(rows)三个层次的概念组成。
非关系型数据库:MongoDb数据库(database)、集合(collection)、文档对象(document)三个层次的概念组成。

MongoDB中的集合对应MySQL的表,但是集合里没有列、行和关系的概念,集合中只有文档,一个文档就相当于一条记录,这就是模式自由的特点展示。



2、数据存储结构

Mysql的数据存储结构:
Mysql中数据的存储,是放在一个与数据库同名的目录中,如果使用MyISAM引擎,数据目录中就会出现.frm、MYD、MYI的文件。

MongoDB的数据存储结构:
MongoDB默认的数据目录是/data/db,它负责存储所有的MongoDB的数据文件。在MG中,每个数据库都包含一个.ns文件和一些数据文件,而且,这些数据文件会随着数据量的增加而变得愈发多。如果系统中有一个fruit的数据库,那么构成这个数据库的文件有fruit.ns, fruit.0, mydb.1三个文件。

MongoDB小常识:
查看所有的数据库  show dbs
查看当前的数据库 db
查看当前数据库中有多少个集合 show tables  或  show collections


3、MongoDB的数据类型

MongoDB使用bson来组织数据,bson类似json,json只是一种简单的表示数据的方式,有6种数据(null、布尔型、数字、字符串、数组及对象),不能完全满足复杂业务的需要,因此,bson还提供日期、32位数字、64位数字等类型。

a、Null
null类型用于表示空值或者不存在的字段,如:{“one”:null}

b、布尔类型
true 和 false , 或者 1和 0都可以表示,如:{“one”:true}

c、32位整数
mongoDB的控制台使用JS引擎进行输入,而JS仅仅支持64位浮点数,所以,32位整数将会被自动转义。

d、64位整数
64位与32位整数一样,在MongoDB的控制台使用时,会转义为64位浮点数。

e、64位浮点数
MongoDB控制台数字的默认类型。如:{“one”:2.02} {“one”:10}

f、字符串
UTF-8字符串都可以表示为字符串类型的数据。如{“one”:”Hello , Jean”}

g、符号
在MongoDB控制台中不支持这种类型,将会自动转义为字符串类型。

h、ObjectId类型
对象id是文档中唯一的12位的ID。0|1|2|3|4|5|6|7|8|9|10|11,即 时间戳|机器|PID|计数器。

i、日期
注意:使用的时候要加上new,如{“one”:new Date()}

j、正则表达式
文档中可以包含正则表达式,其正则表达式采用JS语法来表示。如:{“one”:/ho/i}

k、代码
文档中可以包含js代码,如{“one”:function(){/*..........*/}}

l、数组
文档中的键值可以表示为数组,在数组中还可以内嵌数组,如:{“x”:[“a”,[“o”,”j”,[“x”,”y”,”z”]]]}

m、内嵌文档
文档中可以包含别的文档,也可以作为值嵌入到父文档中。
如:{“x”:{“name”:”tom”,”sex”:”meal”,”age”:25,”love”:”beauty”}}



MongoDB的常用命令

1、查看当前所在的数据库 db
2、查看用户列表 db.system.users.find()
3、查看所有的用户 show users
4、查看所有的数据库 show dbs
5、查看所有的集合 show collections
6、删除当前的数据库 db.dropDatabase()
7、删除集合 db.集合名.drop()
8、想知道mongo支持哪些命令 help
9、想知道当前数据库支持哪些方法 db.help()
10、想知道当前集合支持哪些方法:db.集合名.help()
更多的命令可以通过帮助来查看



MongoDB常用基本操作

1、列出当前的数据库 show dbs,初始状态,只有admin、local 2个数据库。
2、定义新的数据库名 use mydb . 其实,此操作并没有真正的建立起来,只是表明在使用当前的数据库。
3、保存数据,定义一个collection(集合),然后插入数据,使用如下语句进行插入数据:
db.users.insert({“_id”:1,”name”:”mongo”})
插入成功后,查看所有的库,多了个mydb的库,再查看所有集合,多了users集合,再查看刚才添加的数据,也是可以查到的。
4、添加数据,使用关键字insert或save,语法格式基本如下:
db.collname.insert({...})
db.collname.save({...})
>a={“name”:”caida”} {“name”:”wana”}
>b={“age”:24} {“age”:29}
>db.users.insert(a)
>db.users.save(b)
5、删除数据,使用关键字remove,语法格式如下:
db.collname.remove(条件) 【注意:这里如果不写条件,就是删除所有的数据】
示例:db.users.remove({“name”:”badGuy”})
6、修改数据,使用关键字update,语法格式如下:
db.collname.update({条件})
示例:db.users.update({“_id”:1},{“name”,”nosql”})
和删除一样,第一个参数里面是条件匹配,否则,将有可能修改掉所有的数据。
7、查询数据,使用关键字find或findOne(查询一条),示例如下:
db.users.find() 【查询所有的数据】
db.users.findOne() 【查询一条数据记录】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值