首页 / 操作系统 / Linux / Java中使用MongoDB的几种方式
近有时间看了一下mongodb,因为mongodb更容易扩展所以考虑使用mongodb来保存数据。首先下载安装mongodb,这是很简单的,装好后使用mongod命令就可以启动数据库。正式部署的话可以考虑使用百度云bae,bae是支持mongodb的,版本2.x。安装好之后,就要看怎么使用了,看官方的文档使用起来还是比较简单的。文档分为shell版、python版、java版、javascript版等等。本人要再java里使用所以选择java版。但是我发现java版非常"啰嗦",没有python版简洁。java版:
https://docs.mongodb.org/getting-started/node/insert/python版:
https://docs.mongodb.org/getting-started/python/insert/可以看到例子中java版new了很多的Document,这些语句都是重复的。虽然python比较简洁但是本人也并不打算改用python来实现服务器端。因此就想看看java中有没有其他的写法。实际上mongodb可以使用json格式的来保存数据的。代码如下:
String json = "{"database" : "mkyongDB","table" : "hosting"," + ""detail" : {"records" : 99, "index" : "vps_index1", "active" : "true"}}}";
Document dbObject = Document.parse(json);
db.getCollection("restaurants").insertOne(dbObject)可以看到这样就更简单了,不过这并不是我们想要的方式,我们希望的方式是通过一个实体类(javabean)来定义需要保存的内容,然后通过一个sava方法来保存这个实体类。mongodb本身是支持保存实体类的,不过我找到的是2.x的版本,只要让实体类集成ReflectionDBObject就可以了,不过本人在测试的时候发现这样的方式会出错,可能和版本有关。另外又看了一下spring-data-mongodb,spring-data可以实现上面的目的,通过insert方法来直接保存实体类。MongoOperations mongoOps = new MongoTemplate(new Mongo(), "database");
mongoOps.dropCollection("person");Date date = new Date();
log.info(date);
Person person = new Person("Joe", 34 );
person.setCreateTime(date);
mongoOps.insert(person);Person p = mongoOps.findOne(new Query(where("name").is("Joe")),Person.class);
log.info(p.getCreateTime());但是使用spring-data的时候,本人发现实体类中不能添加list,定义了list在保存的时候会报错,但实际上mongodb是支持嵌套的。当然,mongodb的orm还是有很多的,本人并没有一一测试。除了使用orm之外,还有另外一种方式来实现数据库与实体类之间的映射,那就是通过json,使用fastjson可以直接讲实体类转成json(fastjson在转换时是可以处理list的),然后使用mongodb中的方法来保存json这样也是可以的。更多MongoDB相关教程见以下内容:CentOS 编译安装 MongoDB与mongoDB的php扩展 http://www.linuxidc.com/Linux/2012-02/53833.htmCentOS 6 使用 yum 安装MongoDB及服务器端配置 http://www.linuxidc.com/Linux/2012-08/68196.htmUbuntu 13.04下安装MongoDB2.4.3 http://www.linuxidc.com/Linux/2013-05/84227.htmMongoDB入门必读(概念与实战并重) http://www.linuxidc.com/Linux/2013-07/87105.htmUbunu 14.04下MongoDB的安装指南 http://www.linuxidc.com/Linux/2014-08/105364.htm《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF] http://www.linuxidc.com/Linux/2012-07/66735.htmNagios监控MongoDB分片集群服务实战 http://www.linuxidc.com/Linux/2014-10/107826.htm基于CentOS 6.5操作系统搭建MongoDB服务 http://www.linuxidc.com/Linux/2014-11/108900.htmMongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127016.htm