使用MongoDB
在Windows上使用Mongodb是非常反人类的,好在docker能够快速的搭建一个mongo的环境。
docker pull mongo
在执行上述命令后,docker会拉取mongodb的docker镜像,在complete之后即可启动docker。
docker版本的mongo启动分为两步,和linux启动一样。
//启动服务
docker run -d --name mongod -p 27107:27107 -v /data/db/mongo:/data/db mongo
//启动cli 并连接到mongod
docker run -it --name mongo-cli --rm --link mongod:mongod mongo mongo --host mongod
此时就已经连接上mongod开始操作了~
基于shell的CRUD操作
启动mongo shell的方式如上节中docker启动的方式即可,如果是在原生的linux上安装的mongo,可以参考菜鸟教程 mongodb连接。
mongoDB对象ID格式
mongoDB的对象Id能够保证在全局唯一,所以能够安全的在客户端为文档分配ID,不会出现重复的情况。
开头4字为标准的Unix时间戳,编码了从新纪元开始的描述,接下来3字节存储了机器ID,随后2字节是进程ID,最后3字节是进程局部计数器,每次生成ID后计数器都会加一。
Gson
对于MongoDB来说,其脚本和存储格式都像Js和Json一样,但是在Java驱动中,Mongo提供了一个Gson的Java对象来存储信息,一直不明白为什么。但是,最近看了Mongo University的MJ101课程,发现MongoDB自己设计并使用Gson的原因在于Json的能力还不够,对于二维坐标、日期、时间等类型的数据都只能用数组和字符串来存储,这样给数据库的设计带来的限制,因此MongoDB自己设计了Gson格式,在不改变基础Json结构的情况下,增加了对于二维坐标、日期、时间的功能扩展,能够快速的计算时间、空间关系等。
接下来
Mongo的shell插入和增删改查事实上没有太多困惑的地方,比Mysql要简单的多,MongoDB也提供了超级好用的GUI客户端,非常强悍的分析功能和可视化展示,因此下一篇将会是如何使用Java来操作Mongo,这才是我们Java程序员真正关心的操作。
Java的操作会使用原生的Mongo Driver,因为发现现在脱离Spring已经快要不会写代码了。