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,操作,基本操作都还是比较简单。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要使用Java连接MongoDB数据库,需要遵循以下步骤: 1. 下载MongoDB Java驱动程序(JAR文件)。 2. 将JAR文件添加到Java类路径中。 3. 使用Java代码编写MongoDB连接逻辑。 以下是一个简单的Java程序,用于连接MongoDB数据库和执行一些基本操作: ```java import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class MongoDBConnect { public static void main(String[] args) { // 连接MongoDB数据库 MongoClient mongoClient = new MongoClient("localhost", 27017); // 获取数据库 MongoDatabase database = mongoClient.getDatabase("testdb"); // 获取集合 MongoCollection<Document> collection = database.getCollection("testcollection"); // 插入文档 Document doc = new Document("name", "John Doe") .append("age", 30) .append("city", "New York"); collection.insertOne(doc); // 查询文档 Document query = new Document("name", "John Doe"); Document result = collection.find(query).first(); System.out.println(result.toJson()); // 关闭连接 mongoClient.close(); } } ``` 在上面的代码中,我们使用了MongoDB Java驱动程序的`MongoClient`类来连接MongoDB数据库。然后,我们使用`getDatabase`方法获取数据库实例,并使用`getCollection`方法获取集合实例。我们可以使用`insertOne`方法将文档插入集合中,使用`find`方法查询文档。最后,我们使用`close`方法关闭连接。 在运行这段代码之前,确保已经启动了MongoDB服务器。你可以在文档中心找到更多有关MongoDB的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值