Java 程序访问 MongoDB 数据库基础教程

jopen 12年前

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原创翻译