MongoDB体验(linux,java)
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
上面是MongoDB的介绍,如果需要更详细的了解或者是下载MongoDB,请访问:http://www.mongodb.org/
我之所以选择去了解和使用MongDB,除了它具有一些特有的性质,高性能外,主要一点就是开发方面,相比关系型数据库,用ORM库,而且还要维护scheme(这里当然不包括各种快速开发框架 ),本文是一个Java中使用MongoDB的一个简单例子 ,对一个对象的增加以及显示.就一个java类和一个jsp页面. MongoDB的安装和使用以及其文档也很丰富,这里就不再做介绍 .
Service类:
package net.icentos.demo.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import java.net.UnknownHostException;
public class WebSiteService {
private Mongo mongo;
private DB db;
private DBCollection dbc;
private String dbName = "test";
private String collName = "websites";
public WebSiteService() throws UnknownHostException {
//Mongo对象
mongo = new Mongo();
//类似数据库的选择数据库
db = mongo.getDB(dbName);
//类似选择表
dbc = db.getCollection(collName);
}
/**
* 插入数据
* @param url
* @param title
* @param logo
*/
public void addWebSite(String url,String title,String logo){
BasicDBObject obj = new BasicDBObject();
obj.put("url", url);
obj.put("title", title);
obj.put("logo", logo);
System.out.println("Insert = " + title);
dbc.insert(obj);
}
public DBCursor listAll(){
return dbc.find();
}
}
JSP页面:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
net.icentos.demo.mongodb.WebSiteService service = new net.icentos.demo.mongodb.WebSiteService();
//增加操作
String action;
action = request.getParameter("action");
if(action != null && action.equals("add")){
String url = request.getParameter("url");
String title = request.getParameter("title");
String logo = request.getParameter("logo");
title = java.net.URLDecoder.decode(title, "UTF-8");
service.addWebSite(url, title, logo);
}
//列表
com.mongodb.DBCursor cur = service.listAll();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MongoDB Demo</title>
</head>
<body>
<table>
<tbody>
<tr>
<td>名称</td><td>URL</td><td>logo</td>
</tr>
<%
//遍历列表
while(cur.hasNext()){
com.mongodb.DBObject website = cur.next();
String title = (String)website.get("title");
String url = (String)website.get("url");
String logo = (String)website.get("logo");
if(title == null){
title = "";
}
if(url == null){
url ="";
}
if(logo == null){
logo = "";
}
%>
<tr>
<td><%=title%></td><td><%=url%></td><td><img src="<%=logo%>" width="81" height="31" /></td>
</tr>
<% }%>
</tbody>
</table>
<form action="index.jsp" method="GET">
<table>
<tbody>
<tr><td>网站名称:</td><td><input name="title" size="10" /></td></tr>
<tr><td>网站URL:</td><td><input name="url" size="20" /></td></tr>
<tr><td>网站LOGO:</td><td><input name="logo" size="20" /></td></tr>
<tr><td></td><td><input type="submit" value="添加"/></td></tr>
</tbody>
</table>
<input type="hidden" value="add" name="action" />
</form>
</body>
</html>
截图:
代码很少,但是实现我们所需要的功能.这个相比ORM框架要方便多了.而且MongoDB也支持强大的查询语句,赶快去发现吧!
我将在今后的合适的项目中(并非所有项目的数据库都适合使用MongoDB)逐步使用她,因为她也是已经有很多成熟的网站在使用了 .
文章作者:liangdi 最后修改:2010.04.17 转载请注明来自:[自由的心灵]
原文链接:http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/

近期评论