MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS

这个调研笔记我参考了很多地方的文章。能找到出处的,都会在文章末尾标注,找不到的实在不好意思。

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第1张图片

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。


MongoDB就不介绍了,百度百科都有。直接来整干货。

简单的说:这个数据库是以键值对(Map)的形式存放数据的。

也比较符合现在json各种传的大环境。



1. MongoDB的下载.

mongoDB官网:https://www.mongodb.com/

根据业界规则,偶数为“稳定版”,奇数为“开发版”

32bit的mongodb最大只能存放2G的数据,64bit没有限制

我下载了最新的3.4.4.msi安装稳定版。


2.   安装


MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第2张图片

安装好后在环境变量中将环境变量配置到BIN目录下

启动mongoDB 要先启动服务

mongod.exe

也可以作为window service服务安装,以后启动服务可以在

例:$mongod.exe--dbpath"D:\XXX\db"  --install

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第3张图片


几个重要参数:

--install   作为服务启动

--dbpath  生成文件路径

--logpath  日志路径

--auth 开启权限验证

 

开启服务,关闭服务(需要管理员权限):

net start mongodb

net end mongodb

 

要看下是否开启成功,可以在浏览器里面键入“http://localhost:27017/”,

MongoDB的默认端口号为:27017

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第4张图片


官方文档地址

http://docs.mongodb.org/manual/reference/configuration-options/

 

关于权限: http://blog.csdn.net/chen88358323/article/details/50206651

 

3.        概念入门

MongoDB彻底抛弃了熟悉的“表”概念,取而代之的是“集合”。

而一条“表数据”,也变成了一个“文档”。

最基础的单元为文档,文档是由键值对构成。文档有一个唯一“_id”

文档与javascript对象相似,类似于json。数据类型:null,布尔型,字符串,数值,日期,正则表达式,数组,内嵌文档,对象ID,二进制数据,代码

 

大小对比:数据库>集合>文档

 

4.        CURD操作



MongoDB内置了强大的MongoDB Shell

可以用mongo命令启动

 MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第5张图片

shell就是mongodb的客户端,

同时也是一个js的编译器。默认连接test数据库。

 

常用命令:

db 查看当前所在数据库

show dbs 显示所有数据库

use XXX 进入XXX数据库

showcollections 显示所有集合

 

操作数据:

增:insert


删:remove 或者 drop

Remove 慢 drop更快

但是drop会破坏元信息



也可以不加条件

改:update


查:find  findOne

Shell最强大的地方在于,可以插入javascript 例如下图:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第6张图片

 



高级语法:"$gt", "$gte", "$lt","$lte", "$ne","$gt", "$gte","$lt", "$lte", "$ne"

 MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第7张图片

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第8张图片


正则表达式:

 

$where: $where中的value就是熟悉热爱的js

 

 

 

更新:

 

$inc 和 $set  upsert:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第9张图片

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第10张图片

 

upsert是mongodb创造出来的“词”,这个upsert操作就是说:如果我没有查到,我就在数据库里面新增一条,其实这样也有好处,就是避免了我在数据库里面判断是update还是add操作,使用起来很简单,将update的第三个参数设为true即可。


Conut 计数 distinct 排重

 

5.        图形界面IDE 

Orcal有PL/SQL,MySql有sqlyog

MongoDB也有很多图形IDE,常用的有MongoVUE\RockMongo\ RoboMongo

我开始调研的时候下载了MongoVUE

设置了权限,但是我发现无法连接,

然后参考了这个:

http://blog.csdn.net/sonycong/article/details/50466142

 

可以连接,但是只能看到集合,无法看到集合里的文档。

 

后来发现MongoDB的两个大的版本 2.X 和 3.X ,区别在于验证方式不同

我用的MongoVUE 版本太老 只能连接2.X版本

 

于是我去https://www.robomongo.org/ 官网下载了robomongo最新版

如果有权限 可以选择验证方式:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第11张图片

 

这个IDE很好用


数据库、集合、文档一目了然,而且支持mongo Shell

 

 MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第12张图片

 

 

 

 

 

 

6.        JAVA JDBC 连接 mongoDB

最重要的包:

连接数据库,选择集合(无验证):

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第13张图片


有验证:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第14张图片


CRUD:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第15张图片

 

 

7.        GridFS

 

官方文档:http://www.mongodb.org/display/DOCS/GridFS

概念:存储二进制文件

主要用途:存储不常改变但经常需要连续访问的大文件

最简单的方式:mongofiles工具  

主要用到的方法:put(上传)\list(展示)\get(下载)

 

 

>mongofiles.exe -d gridfs put song.mp3

 

 

>db.fs.files.find()

 

 

{

   _id:ObjectId('534a811bf8b4aa4d33fdf94d'),

   filename:"song.mp3",

   chunkSize: 261120,

   uploadDate: newDate(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",

   length: 10401959

}

 

 

将大文件切割成多个大块,将每个块作为独立的文档进行存储

支持二进制,所以开销降到非常低,除将文件每个块单纯储存,还有一个文档用于将这些块组织在一起并存储该文件元信息

 

块默认使用集合:fs.chunks(默认)

Files_id—— 块所属文件的元信息

N —— 块在文件中的相对位置

Data —— 块所包含的二进制数据

 

元信息:fs.files(默认)

_id——文件唯一id,值就是文件的每个块

Length —— 文件所包含的字节数

Chunksize —— 组成文件的每个块的大小,单位是字节,值为256KB,可调整

Upload Date —— 文件被上传到Gfrid的基础

Md5 ——  校验码 (可用来确定是否上传成功)

 

也可以自己添加下载次数 MIME类型或者用户评分字段。

 

另外,db.fs.files.distinct(“filename”)可以查询所有文件名。

 

 

关于JAVA



主要的包:

测试类:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第16张图片

 

 MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第17张图片

 


测试类:

MongoDB入门调研笔记-用JAVA操作MongoDB、GridFS_第18张图片




8.        与Spring 融合

此处主要参考了这个链接:

http://blog.csdn.net/cuiran/article/details/8287204

 

 

 

 

其他参考链接:

 

角色权限:http://blog.csdn.net/chen88358323/article/details/50206651

 

无法连接:http://blog.csdn.net/sonycong/article/details/50466142

 

权限问题:http://blog.csdn.net/sonycong/article/details/50466142

 

JDBC:http://www.runoob.com/mongodb/mongodb-java.html

 

Spring:http://blog.csdn.net/cuiran/article/details/8287204

 

SpringMVC:http://www.open-open.com/lib/view/open1454374782167.html

 

指南:http://blog.csdn.net/lihao21/article/details/46939269

 

CRUD:http://blog.csdn.net/ererfei/article/details/50857103

 

mongoUtil:http://www.cnblogs.com/zhoulf/p/4571647.html(JDBC)

其他参考书籍:

《MongoDB权威指南》

预备借阅书籍:

《MongoDB实战、架构、开发与管理》

你可能感兴趣的:(MongoDB)