近有時間看了一下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.htm
CentOS 6 使用 yum 安裝MongoDB及服務器端配置 http://www.linuxidc.com/Linux/2012-08/68196.htm
Ubuntu 13.04下安裝MongoDB2.4.3 http://www.linuxidc.com/Linux/2013-05/84227.htm
MongoDB入門必讀(概念與實戰並重) http://www.linuxidc.com/Linux/2013-07/87105.htm
Ubunu 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.htm
Nagios監控MongoDB分片集群服務實戰 http://www.linuxidc.com/Linux/2014-10/107826.htm
基於CentOS 6.5操作系統搭建MongoDB服務 http://www.linuxidc.com/Linux/2014-11/108900.htm
MongoDB 的詳細介紹:請點這裡
MongoDB 的下載地址:請點這裡