java连接MongoDB数据库

这段时间尝试了一下MongoDB,感觉十分易用,方便,相比关系型的数据库来说优势也很大,于是尝试了下使用java连接MongoDB,并进行了

基本的增删改查操作。

首先先在控制台中连接数据库,查看数据库有几个表。

现在,新建一个maven工程,pom.xml中的依赖如下:

<!--  WICKET DEPENDENCIES -->

		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket</artifactId>
			<version>${wicket.version}</version>
		</dependency>
		<!-- OPTIONAL
			<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket-extensions</artifactId>
			<version>${wicket.version}</version>
			</dependency>
		-->

		<!-- LOGGING DEPENDENCIES - LOG4J -->

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.4.2</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.14</version>
		</dependency>

		<!--  JUNIT DEPENDENCY FOR TESTING -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>

		<!--mongoDB for test-->
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>3.0.2</version>
		</dependency>

		<!--  JETTY DEPENDENCIES FOR TESTING  -->

		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-util</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-management</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

现在,在源文件夹中新建MongoDb类

   编写以下九个方法,以下几个方法,就是主要的连接,增删改查操作:
package com.haizhi.mongoDB.connect;

import com.mongodb.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by xiaxuan on 15/7/17.
 */
public class MongoDb {

    //1、连接到数据库
    public MongoClient getMongo(){
        //1、连接到MongoDB数据库
        MongoClient mongo=new MongoClient("127.0.0.1",27017);
        return mongo;
    }

    //2、获取指定数据库
    public DB getDb(String DbName){
        MongoClient mongo=getMongo();
        return mongo.getDB(DbName);
    }

    //3、显示数据库中所有数据库
    public void showDb(){
        MongoClient mongo=getMongo();
        //显示所有数据库
        List<String> dbs=mongo.getDatabaseNames();
        for(String database:dbs){
            System.out.println(database);
        }

    }

    //4、获取一个表
    public DBCollection getTable(DB db,String tableName){
        //如果表不存在,MongoDB将会创建一个
        DBCollection table=db.getCollection("users");
        return table;
    }

    //5、显示数据库中所有表
    public void showTables(DB db){
        //显示选择的数据库中所有表
        Set<String> tables=db.getCollectionNames();
        for(String coll:tables){
            System.out.println(coll);
        }
    }

    //6、新增一条记录
    public void insert(Map<String,Object> map,DBCollection table){
        BasicDBObject document=new BasicDBObject();
        for(Object key:map.keySet()){
            document.put((String) key, map.get(key));
        }
        table.insert(document);
    }

    //7、查找并显示一条记录
    public void search(BasicDBObject basicDBObject,DBCollection table){
        DBCursor dbCursor=table.find(basicDBObject);
        while(dbCursor.hasNext()){
            System.out.println(dbCursor.next());
        }
        System.out.println("End");
    }

    //8、更新一条记录
    public void update(BasicDBObject query,BasicDBObject newDocument,DBCollection table){
        BasicDBObject updateObj=new BasicDBObject();
        updateObj.put("$set",newDocument);
        table.update(query, updateObj);
    }

    //9、删除一条记录
    public void delete(BasicDBObject basicDBObject,DBCollection table){
        table.remove(basicDBObject);
    }
}

   现在,在test文件夹中,新建测试类:
  testInsert:
package com.haizhi.testMongoDB;

import com.haizhi.mongoDB.connect.MongoDb;
import com.mongodb.DBCollection;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by xiaxuan on 15/7/17.
 */
public class testInsert {

    @Test
    public void insert(){
        MongoDb mongoDb=new MongoDb();
        MongoClient mongo=mongoDb.getMongo();
        DB dB=mongoDb.getDb("MongoTest");
        DBCollection table=mongoDb.getTable(dB, "users");
        Map<String,Object> map=new HashMap<String, Object>();
        map.put("id",3);
        map.put("name","xiaxuan");
        map.put("age",22);
        map.put("sex",true);
        map.put("nickname","bingwen");
        mongoDb.insert(map,table);
    }

}

执行完程序后,在数据库中搜索:

在数据库中查询到,这一条记录成功插入。

现在测试查询:

testSearch:

package com.haizhi.testMongoDB;

import com.haizhi.mongoDB.connect.MongoDb;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
import com.mongodb.DB;
import org.junit.Test;

/**
 * Created by xiaxuan on 15/7/17.
 */
public class testSearch {

    @Test
    public void testSearch(){
        MongoDb mongoDb=new MongoDb();
        MongoClient mongo=mongoDb.getMongo();
        DB dB=mongoDb.getDb("MongoTest");
        DBCollection talbe=mongoDb.getTable(dB, "users");
        BasicDBObject basicDBObject=new BasicDBObject();
        basicDBObject.append("name","xiaxuan");
        mongoDb.search(basicDBObject,talbe);
    }
}

成功查询到两条数据。

修改的测试源程序和删除的基本相同,这里就只贴出源码,不再演示具体效果。

testUpdate:

package com.haizhi.testMongoDB;

import com.haizhi.mongoDB.connect.MongoDb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.sun.xml.internal.rngom.parse.host.Base;
import org.junit.Test;

/**
 * Created by xiaxuan on 15/7/17.
 */
public class testUpdate {
    @Test
    public void update(){
        MongoDb mongoDb=new MongoDb();
        DB dB=mongoDb.getDb("MongoTest");
        DBCollection table=mongoDb.getTable(dB, "users");
        BasicDBObject query=new BasicDBObject();
        query.put("name","xiaxuan");
        BasicDBObject newDocument=new BasicDBObject();
        newDocument.put("name","bingwen");
        mongoDb.update(query,newDocument,table);
    }
}

testDelete:

package com.haizhi.testMongoDB;

import com.haizhi.mongoDB.connect.MongoDb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import org.junit.Test;

/**
 * Created by xiaxuan on 15/7/17.
 */
public class testDelete {
    @Test
    public void delete(){
        MongoDb mongoDb=new MongoDb();
        DB dB=mongoDb.getDb("MongoTest");
        DBCollection table=mongoDb.getTable(dB, "users");
        BasicDBObject basicDBObject=new BasicDBObject();
        basicDBObject.put("name","xiaxuan");
        mongoDb.delete(basicDBObject,table);
    }
}

连接Mongodb,以及基本的增删改查操作,就是这些,连接MongoDb,操作,基本操作都还是比较简单。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-01 04:50:59

java连接MongoDB数据库的相关文章

使用mongo-java-driver-3.0.2连接MongoDB数据库

这里使用的mongodb的java驱动版本是:3.0.2,文件名mongo-java-driver-3.0.2.jar下载网址(也可以下载其它版本):http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ 也可以查看相关的mongodb的api:http://api.mongodb.com/java/current/index.html package utils; import java.net.UnknownHostExc

java连接mongodb源码解读

用mongdb也大半年了,一直是业务上的逻辑实现了就ok.然而这样并不能进步--因此今天查了查java连接mongodb驱动的源码,搜到的各种信息整合一下,方便以后深入的使用. 先贴连接数据库代码  List<ServerAddress> replicaSet = new          ArrayList<ServerAddress>();          replicaSet.add(new ServerAddress("127.0.0.1", 2701

Linux系统Java连接Mysql数据库

Linux系统下Java连接Mysql数据库方法与Windows下类似,具体步骤如下: 下载JDBC(驱动):mysql-connector-java-5.1.37.tar.gz 解压下载的数据包:tar -zxvf mysql-connector-java-5.1.37.tar.gz 解压后,mysql-connector-java-5.1.29-bin.jar位于mysql-connector-java-5.1.29目录下. 配置解压后,mysql-connector-java-5.1.29

Java连接SqlServer2008数据库

Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下载 完成后,是个exe文件,点击运行,会提示你选择解压目录. 解压完成后,进入 <你解压到得目录>\sqljdbc_3.0\chs,里边有两个我们需要的东东 一个是:sqljdbc.jar,另外一个是sqljdbc4.jar 这里使用sqljdbc4.jar 首先配置sa身份验证: 由于安装sql

Java连接Access数据库的那些坑

Java 使用 JDBC 连接Access数据库 需要掌握的技能 1.Java SE基本技术 2.懂点JDBC技术 能够学到如何使用Java正确的连接JDBC 环境 window8.1 64位 jdk6 32位 Access 2013 Eclipse 4.4 下面是代码 package com.malin.app; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impor

java连接oracle数据库,关闭连接出现异常:java.sql.SQLRecoverableException: IO Error: Connection reset

java.sql.SQLRecoverableException: IO Error: Connection reset at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:612) at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:5094) at com.sms.send.StartTaskNew.run(SmsSend.java

nodejs:注册登录session出错以及连接Mongodb数据库时Error connecting to database解决方案

(1)nodejs:注册登录session出错 解决办法: 在app.js 中将var MongoStore =  require(connect-mongo')改为var MongoStore =  require(connect-mongo')(express) 即可: (2)连接Mongodb数据库时Error connecting to database解决方案 这种情况下是自己的mongodb数据库没有装好 解决办法: a.在官网上下载安装数据库 b.在mongodb文件夹里面新建文件

一个非常标准的Java连接Oracle数据库的示例代码

最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项"库",然后点击"添加外部Jar",选择"D:\Oracle\app\oracle\product\11.2.0\server \jdbc\lib\ojdbc6_g.jar"(注:D:\Oracle为数据库的安装路径). 2.以下代码为非常标准的Oracle数据库连接代码示例: /** * 一个非常标准的连接Oracl

Java连接SQLite数据库详解【转】

1 package com.hedalixin; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 7 /** 8 * @author Chrome 9 * 10 */ 11 public class JavaSqlite { 12 13 /** 14 * @param args 15 */ 16 pu