设为首页 加入收藏

TOP

MongoDB 数据库的学习与使用详解(一)
2019-09-04 01:02:49 】 浏览:100
Tags:MongoDB 数据库 学习 使用 详解

? 实际上在现实的开发之中一直存在一种神奇的问题:


? 数据表 → JDBC 读取 → POJO(VO、PO) → 控制层转化为 JSON 数据 → 客户端


? 可是这样的转换实在是太麻烦了,那么最好的做法是,直接有一个数据库就存放有要显示的 JSON 数据该有多好,那么就省略所有需要进行转换的过程。所以在实际的开发之中,往往除了关系型数据库之外还要提供有一个 NOSQL 数据库,其中 NOSQL 数据库负责数据的读取,因为直接保存的就是 JSON (前提:MongoDB 中的数据是排列好的组合数据)。


? 例如:现在要求显示出每个雇员的编号、姓名、职位、部门名称、部门位置、工资等级。传统的关系型数据库之中一定要存放大量的冗余数据,不合理。而有了 NOSQL 数据库之后,可以直接在业务层里面将数据交给 NOSQL 数据库保存,按照指定的结构进行存储。


? 在 MongoDB 数据库之中与 Oracle 数据库有如下的概念对应:


? MongoDB 和 MySQL 的对比:



?


? MongoDB 和 MySQL 的操作命令对比:



?


? MongoDB 之所以能够更好的发展也取决于:面向集合的存储过程、模式自由(无模式)、方便的进行数据存储扩充、支持索引、支持短暂数据保留、具备完整的数据库状态监控、基于 BSON (MongoDB 自己的JSON )应用。


? 如果想要得到 MongoDB 数据库只需要登录 (www.mongodb.org) 上就可以直接下载可用版本,最新的版本是 3.0.x ,但是这个版本变为了 Windows 安装版(只是把原来的解压缩版变为了安装拷贝)。


? msi 格式文件是点击安装文件, zip 格式是压缩包文件,一般下载 msi 文件。


? 将下载下来的 MongoDB 数据库直接进行安装。安装的时候需要选择好对应的操作系统,本次使用的是64位的安装系统。


? 第一步:打开安装文件



? 第二步:接受协议



? 第三步:选择自定义安装



? 第四步:点击浏览



? 第五步:更改目录


? 安装路径一般放在一个盘的根目录下 D:\MongoDB 。



? 第六步:点击安装



? MongoDB 安装完成之后,严格来讲并不能够在 Windows 下使用,需要为它配置 path 环境属性,配置目录:“E:\MongoDB\bin” 。


? 计算机 - 属性 - 高级系统设置 - 环境变量 - 系统变量,在最前面加上:" E:\MongoDB\bin; "


? 如果要想正常启动 MongoDB 数据库,那么必须建立一个文件夹,这个文件夹将保存所有的数据库的信息,现在将在 MongoDB 文件夹之中建立一个 db 的目录(E:\MongoDB\db),并且在此目录下保存所有的数据文件。


? MongoDB 数据库的启动需要使用 mongod.exe 命令完成,启动的时候可以设置端口号,也可以不设置端口号。


? 如果日后需要通过程序访问数据库的话,那么一定要设置端口号。


? 当 MongoDB 服务启动之后,可以使用 mongo 命令连接数据库。


范例:查询所有的数据库


? 此时只存在有一个 local 的本地数据库,不过这个数据库不使用。


? 虽然以上的代码实现了数据库的启动与连接操作,但是从严格意义上来讲,以上的代码没有任何的用处,因为从实际的开发来讲,在 MongoDB 启动的时候需要设置一些相应参数:端口号、是否启用用户验证、数据文件的位置等等。


范例:在 E:\MongoDB 目录下建立一个文件 "mongodb.conf"


范例:连接数据库


? 此时服务器已经存在有指定的端口号了。


? 使用端口号启动在日后的程序开发部分是非常有用处的。


? 在 MongoDB 数据库里面是存在有数据库的概念,但是没有模式(所有的信息都是按照文档保存的),保存数据的结构就是 JSON 结构,只不过在进行一些数据处理的时候才会使用到 MongoDB 自己的一些操作符。


? 实际上这个时候并不会创建数据库,只有在数据库里面保存集合数据之后才能够真正创建数据库。


? 查看数据库信息


? 这个时候 mldn 数据库才会真正的存在。


? 但是很多的时候如果按照以上的代码形式进行会觉得你不正常,因为正常人使用 MongoDB 数据库集合操作的时候都是直接向里面保存一个数据。


? 发现 dept 集合自动创建了。


? 从传统的数据表来看(集合就相当于表的结构),表的结构一旦定义就必须按照其定义的要求进行内容的编写,但是 MongoDB 不一样,它可以自己随意扩充数据。


? 此时 dept 集合的内容可以由用户随便去定义,完全不用考虑其他的结构,那么实际上就必须明确一点了,在 MongoDB 数据库之中是绝对不可能存在有查看集合结构的操作。


? 在 MongoDB 集合中的每一行记录都会自动的生成一个 “"_id" : ObjectId("5d0493c2db2a129b32288895")” 数据,这个数据的组成是:“时间戳 + 机器码 + 进程 PID + 计数器“,这个 ID 的信息是 MongoDB 数据库自己为用户生成的。


? 发现财务部的信息就被删除了


? 现在更新也完成了,但这个更新意义不大,因为对于更新的操作在整个集合里面是非常麻烦的,而对于整个 MongoDB 而言,能够使用的数据类型基本上也是我们熟悉的几种数据类型,比如: int 、string 、date 等。


? 只有 emp 表了


? 需要注意的是,当前在哪个数据库下,执行语句后就删除哪个数据库,所有必须先切换到数据库后才可以删除。


? 只要是数据库那么就绝对离不开最为核心的功能: CRUD ,所以在 MongoDB 里面对于数据的操作也是有支持的,但是需要提醒的是,除了增加之外,其它的都很麻烦。


? 使用 “db.集合.insert()” 可以实现数据的增加操作。


范例:增加一个简单数据


范例:保存数组


? 如果要保存多个数据,那么就使用数组。


范例:保存 10000 个数据


? 如果数据保存很多的情况下,列表时不会全部列出,它只会列出部分的内容。


? 任何的数据库之中,数据的查询操作都是最为麻烦的,而在 MongoDB 数据库里面,对于查询的支持非常到位,包含有关系运算、逻辑运算、数组运算、正则运算等等。


? 首先对于数据的查询操作核心的语法:“db.集合名称.find({查询条件}[,{设置显示的字段}])”


范例:最简单的用法就是直接使用 find() 函数完成查询


范例:希望查询出 url 为 “www.mldn.cn” 的数据


? 发现在进行数据查询的时候也是按照 JSON 的形式设置的相等关系。它的整个开发之中都不可能离开 JSON 数据。


? 对于设置的显示字段严格来讲就称为数据的投影操作,如果不需要显示的字段设置 “ 0 ”,而需要显示的字段设置 “ 1 ”。


范例:不想显示 "_id"


? 大部分的情况下,这种投影操作的意义不大。同时对于数据的查询也可以使用 “pretty()” 函数进行漂亮显示。


范例:漂亮显示


? 数据列多的时候一定可以看出华丽的显示效果。


范例:查询单个数据


? 利用以上的查询可以实现格式化的输出效果,前提:列的内容必须多。


? 在 MongoDB 里面支持的关系查询操作:大于($gt)、小于($lt)、大于等于($gte)、小于等于($lte)、不等于($ne)、等于(key:value,$eq)。但是要想让这些操作可以正常使用,那么需要准备出一个数据集合。


范例:定义一个学生集合


范例:查询姓名是张三的学生信息


范例:查询性别是男的学生信息


范例:查询年龄大于19岁的学生信息


范例:查询成绩大于等于60分的学生信息


范例:查询姓名不是王五的学生信息


? 此

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 误删除表的几种恢复方法 下一篇ORA-01157与ORA-01110无法识别/锁..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目