博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB之学习【三】:MongoDB的体系结构
阅读量:2159 次
发布时间:2019-05-01

本文共 2417 字,大约阅读时间需要 8 分钟。

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 collections3、MongoDB的数据类型MongoDB使用bson来组织数据,bson类似json,json只是一种简单的表示数据的方式,有6种数据(null、布尔型、数字、字符串、数组及对象),不能完全满足复杂业务的需要,因此,bson还提供日期、32位数字、64位数字等类型。a、Nullnull类型用于表示空值或者不存在的字段,如:{“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、查看当前所在的数据库 db2、查看用户列表 db.system.users.find()3、查看所有的用户 show users4、查看所有的数据库 show dbs5、查看所有的集合 show collections6、删除当前的数据库 db.dropDatabase()7、删除集合 db.集合名.drop()8、想知道mongo支持哪些命令 help9、想知道当前数据库支持哪些方法 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() 【查询一条数据记录】

转载地址:http://frrwb.baihongyu.com/

你可能感兴趣的文章
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>