Java 程序访问 MongoDB 数据库(入门)

红薯 发布于 2012/07/02 21:49
阅读 702
收藏 8

NoSQL 数据库因为其良好的可伸缩性日益受关注,如果使用得当的话,NoSQL 可以带来很大的提升。而 MongoDB 就是一个用 C++ 开发的开源的高可伸缩性的 NoSQL 数据库。

本文将介绍如何在 Java 程序中使用 MongoDB 数据库(Windows平台)。

1. 安装 MongoDB

安装非常简单,你可以从 MongoDB 官方的文档中来获取帮助,包括 Windows、Linux 和 OS X 系统:http://www.mongodb.org/display/DOCS/Quickstart

2. 启动 MongoDB 服务器

安装完毕后只需要运行 bin 目录下的 mongod.exe 即可启动。MongoDB 服务器默认运行的端口是 27017,而数据存放于 /data/db 目录,该目录必须在安装时候创建好。

3. 启动 MongoDB 交互式命令行

运行 mongo.exe 程序即可启动 MongoDB 交互式命令行环境。

4. 创建一个 MongoDB 数据库

假设我们要创建一个名为 company 的数据库,只需要在 MongoDB 命令行环境中运行:

use company

记住,MongoDB 在你插入任何数据之前并不会创建数据库。

你可以使用下面命令来查看系统中已有的数据库,你会发现你刚创建的 company 并不在其中。

show dbs;

5. 插入数据

我们可以通过下面命令在 company 数据库中创建集合(相当于SQL数据库中的表),名为 employees

employee = {name : "A", no : 1}   
db.employees.save(employee) 

要查看集合中的数据可以使用如下命令:

db.users.find(); 

6. 编写 Java 程序访问 MongoDB

下面是一个简单的 Java 程序用来连接到我们刚创建的数据库并插入数据,然后进行查询。在此之前你需要下载 MongoDB 的 Java 驱动包:MongoDB Java Driver

代码如下:

package com.eviac.blog.mongo;

import java.net.UnknownHostException;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class MongoDBClient {

 public static void main(String[] args) {

  try {

   Mongo mongo = new Mongo("localhost", 27017);

   DB db = mongo.getDB("company");

   DBCollection collection = db.getCollection("employees");

   BasicDBObject employee = new BasicDBObject();
   employee.put("name", "Hannah");
   employee.put("no", 2);

   collection.insert(employee);

   BasicDBObject searchEmployee = new BasicDBObject();
   searchEmployee.put("no", 2);

   DBCursor cursor = collection.find(searchEmployee);

   while (cursor.hasNext()) {
    System.out.println(cursor.next());
   }

   System.out.println("The Search Query has Executed!");

  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (MongoException e) {
   e.printStackTrace();
  }

 }
}

运行结果:

{ "_id" : { "$oid" : "4fec74dc907cbe9445fd2d70"} , "name" : "Hannah" , "no" : 2}  
The Search Query has Executed!

英文原文OSCHINA原创翻译
加载中
返回顶部
顶部