首页 > 编程开发 > MongoDB体验(linux,java)

MongoDB体验(linux,java)

2010年4月17日 liangdi 发表评论 阅读评论

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>

截图:

mongodb_demo

mongodb_demo

代码很少,但是实现我们所需要的功能.这个相比ORM框架要方便多了.而且MongoDB也支持强大的查询语句,赶快去发现吧!
我将在今后的合适的项目中(并非所有项目的数据库都适合使用MongoDB)逐步使用她,因为她也是已经有很多成熟的网站在使用了 .

文章作者:liangdi 最后修改:2010.04.17 转载请注明来自:[自由的心灵]

原文链接:http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/

分类: 编程开发 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.