MongoDB for Java详解数据库

开发环境

  • 操作系统:Windows7

  • IDE: MyEclipse

  • Database: MongoDB

开发依赖库

  • bson-3.0.1.jar

  • mongodb-driver-3.0.1.jar

  • mongodb-driver-core-3.0.1.jar

  • junit-4.12.jar

  • hamcrest-core-1.3.jar

PS:前三个必须引入(版本可不同),后两个为 junit 测试所用

一、准备环境

1、下载mongoDB对Java支持的驱动包

下载地址:mongodb 也可以使用Maven管理,Maven 代码片段如下:

<dependencies> 
    <dependency> 
        <groupId>org.mongodb</groupId> 
        <artifactId>bson</artifactId> 
        <version>3.0.1</version> 
    </dependency> 
 
    <dependency> 
        <groupId>org.mongodb</groupId> 
        <artifactId>mongodb-driver</artifactId> 
        <version>3.0.1</version> 
    </dependency> 
 
    <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.12</version> 
    </dependency> 
</dependencies>

2、建立Java Project工程,导入驱动包,目录结构如下

这里写图片描述

二、Java操作 MongoDB

1、建立连接

连接数据库,需要指定数据库名,如果数据库不存在,MongoDB会自动创建它。

使用 MongoClient 来连接 MongoDB,代码片段如下:

// connect to mongodb server 
MongoClient mongoClient = new MongoClient("localhost", 27017); 
// connect database 
MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");

2、创建集合

要创建集合,使用 com.mongodb.client.MongoDatabase 类的 createCollection() 方法。

mongoDatabase.createCollection("person");

3、获取一个集合列表

要获取数据库中的所有集合,使用 com.mongodb.client.MongoDatabase 类的 listCollectionNames() 方法。

MongoIterable<String> result = mongoDatabase.listCollectionNames(); 
 
Iterator ite = result.iterator(); 
while (ite.hasNext()) { 
    System.out.println("集合名字:" + ite.next()); 
}

4、获取/选择一个集合

要从数据库中获得/选择一个集合,使用 com.mongodb.client.MongoDatabase 类的 getCollection() 方法。

代码片段获取/选择一个集合

MongoCollection<Document> collection = mongoDatabase.getCollection("person");

5、插入文档

为了将文档插入MongoDB中,使用 com.mongodb.client.MongoCollection 类的 insertOne() 方法。

代码片段插入一个文件

MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
Document document = new Document("title", "MongoDB") 
        .append("description", "database") 
        .append("by","itmyhome"); 
collection.insertOne(document);

6、检索所有文件

要检索一个集合中的所有文件,使用 com.mongodb.client.MongoCollection 类的 find() 方法。

MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
 
FindIterable<Document> document = collection.find(); 
Iterator ite = document.iterator(); 
 
while (ite.hasNext()) { 
    System.out.println(ite.next()); 
}

7、更新文件

从集合中更新文件,使用 com.mongodb.client.MongoCollection 类的 updateMany() 和 updateOne() 方法。

下面代码片段是将name为zhangsan的mobile信息修改为11011

MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
collection.updateOne(Filters.eq("name", "zhangsan"), new Document("$set", new Document("mobile", "11011")));

8、删除文件

从集合中删除文件,使用 com.mongodb.client.MongoCollection 类的 deleteMany() 和 deleteOne() 方法。

下面代码片段是删除title为MongoDB的所有文件

MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
collection.deleteMany(Filters.all("title", "MongoDB"));

完整代码

import java.util.Iterator; 
import org.bson.Document; 
import org.junit.Test; 
import com.mongodb.MongoClient; 
import com.mongodb.client.FindIterable; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import com.mongodb.client.MongoIterable; 
import com.mongodb.client.model.Filters; 
 
/** 
 * http://itmyhome.com 
 * 作者: itmyhome 
 */ 
public class CopyOfDBUtil {
    
 
    // 连接到 mongodb 服务 
    MongoClient mongoClient = null; 
    // 连接到数据库 
    MongoDatabase mongoDatabase = null; 
 
    /** 
     * 构造方法实例化 
     */ 
    public CopyOfDBUtil() { 
        mongoClient = new MongoClient("localhost", 27017); 
        mongoDatabase = mongoClient.getDatabase("mydb"); 
        System.out.println("Connect to database successfully: " + mongoDatabase); 
 
    } 
 
    /** 
     * 创建集合 
     */ 
    @Test 
    public void createCollection(String collectionName) { 
        mongoDatabase.createCollection(collectionName); 
        System.out.println("集合: " + collectionName + " 创建成功"); 
    } 
 
    /** 
     * 获取所有集合 
     */ 
    @Test 
    public void getCollection() { 
        MongoIterable<String> result = mongoDatabase.listCollectionNames(); 
 
        Iterator ite = result.iterator(); 
        while (ite.hasNext()) { 
            System.out.println("集合名字:" + ite.next()); 
        } 
    } 
 
    /** 
     * 删除集合 
     */ 
    @Test 
    public void dropCollection(String collectionName) { 
        mongoDatabase.getCollection(collectionName).drop(); 
        System.out.println("集合:" + collectionName + " 删除成功"); 
    } 
 
    /** 
     * 插入文档 
     */ 
    @Test 
    public void insert() { 
 
        // 获取所插入集合 
        MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
        Document document = new Document("title", "MongoDB") 
                .append("description", "database") 
                .append("by","itmyhome"); 
        collection.insertOne(document); 
    } 
 
    /** 
     * 检索所有文件 
     */ 
    @Test 
    public void queryAll() { 
        MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
 
        FindIterable<Document> document = collection.find(); 
        Iterator ite = document.iterator(); 
 
        while (ite.hasNext()) { 
            System.out.println(ite.next()); 
        } 
    } 
 
    /** 
     * 更新文件 
     */ 
    @Test 
    public void update(){ 
        MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
        collection.updateOne(Filters.eq("name", "zhangsan"),  
            new Document("$set", new Document("mobile", "11011"))); 
    } 
 
    /** 
     * 删除文档 
     */ 
    @Test 
    public void deleteAllDocument() { 
        MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
        collection.deleteMany(Filters.all("title", "MongoDB")); 
        System.out.println("删除成功"); 
    } 
 
    /** 
     * 条件查询 
     */ 
    @Test 
    public void find() { 
        MongoCollection<Document> collection = mongoDatabase.getCollection("person"); 
        //查询likes为100的数据 
        FindIterable<Document> document = collection.find(Filters.lt("likes",100)); 
 
        Iterator ite = document.iterator(); 
        while (ite.hasNext()) { 
            System.out.println(ite.next()); 
        } 
    } 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/4196.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论