Java 操作MongoDb 增删改查

如何安装mongodb,请参考http://blog.csdn.net/zpf336/article/details/50765789

注:此文基于mongoDb API 3.2.0进行的测试。

测试代码如下:

pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>mongo</groupId>
    <artifactId>mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mongodb</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.2.0</version>
        </dependency>

    </dependencies>
</project>


MongoDb API 类:

package mongo.mongodb;

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.UpdateResult;

public class MongoDb {
    private static MongoCollection<Document> collection;

    /**
     * 链接数据库
     * 
     * @param databaseName
     *            数据库名称
     * @param collectionName
     *            集合名称
     * @param hostName
     *            主机名
     * @param port
     *            端口号
     */
    public static void connect(String databaseName, String collectionName,
            String hostName, int port) {
        @SuppressWarnings("resource")
        MongoClient client = new MongoClient(hostName, port);
        MongoDatabase db = client.getDatabase(databaseName);
        collection = db.getCollection(collectionName);
        System.out.println(collection);
    }

    /**
     * 插入一个文档
     * 
     * @param document
     *            文档
     */
    public static void insert(Document document) {
        collection.insertOne(document);
    }

    /**
     * 查询所有文档
     * 
     * @return 所有文档集合
     */
    public static List<Document> findAll() {
        List<Document> results = new ArrayList<Document>();
        FindIterable<Document> iterables = collection.find();
        MongoCursor<Document> cursor = iterables.iterator();
        while (cursor.hasNext()) {
            results.add(cursor.next());
        }

        return results;
    }

    /**
     * 根据条件查询
     * 
     * @param filter
     *            查询条件 //注意Bson的几个实现类,BasicDBObject, BsonDocument,
     *            BsonDocumentWrapper, CommandResult, Document, RawBsonDocument
     * @return 返回集合列表
     */
    public static List<Document> findBy(Bson filter) {
        List<Document> results = new ArrayList<Document>();
        FindIterable<Document> iterables = collection.find(filter);
        MongoCursor<Document> cursor = iterables.iterator();
        while (cursor.hasNext()) {
            results.add(cursor.next());
        }

        return results;
    }

    /**
     * 更新查询到的第一个
     * 
     * @param filter
     *            查询条件
     * @param update
     *            更新文档
     * @return 更新结果
     */
    public static UpdateResult updateOne(Bson filter, Bson update) {
        UpdateResult result = collection.updateOne(filter, update);

        return result;
    }

    /**
     * 更新查询到的所有的文档
     * 
     * @param filter
     *            查询条件
     * @param update
     *            更新文档
     * @return 更新结果
     */
    public static UpdateResult updateMany(Bson filter, Bson update) {
        UpdateResult result = collection.updateMany(filter, update);

        return result;
    }

    /**
     * 更新一个文档, 结果是replacement是新文档,老文档完全被替换
     * 
     * @param filter
     *            查询条件
     * @param replacement
     *            跟新文档
     */
    public static void replace(Bson filter, Document replacement) {
        collection.replaceOne(filter, replacement);
    }

    /**
     * 根据条件删除一个文档
     * 
     * @param filter
     *            查询条件
     */
    public static void deleteOne(Bson filter) {
        collection.deleteOne(filter);
    }

    /**
     * 根据条件删除多个文档
     * 
     * @param filter
     *            查询条件
     */
    public static void deleteMany(Bson filter) {
        collection.deleteMany(filter);
    }
}

测试类:

package mongo.mongodb;

import java.util.List;

import org.bson.Document;
import org.junit.Before;
import org.junit.Test;

import com.mongodb.client.result.UpdateResult;

public class MongoTest 
{
    @Before
    public void before(){
        MongoDb.connect("test", "darren", "172.16.155.151", 27017);
    }
    
    @Test
    public void testInsert(){
        Document document = new Document();
        document.append("name", "wang").append("gender", "female");
        MongoDb.insert(document);
    }
    
    @Test
    public void testFindAll(){
        List<Document> results = MongoDb.findAll();
        for(Document doc : results){
            System.out.println(doc.toJson());
        }
    }
    
    @Test
    public void testFindBy(){
        Document filter = new Document();
        filter.append("name", "li si");
        List<Document> results = MongoDb.findBy(filter);
        for(Document doc : results){
            System.out.println(doc.toJson());
        }
    }
    
    @Test
    public void testUpdateOne(){
        Document filter = new Document();
        filter.append("gender", "male");
        
        //注意update文档里要包含"$set"字段
        Document update = new Document();
        update.append("$set", new Document("gender", "female"));
        UpdateResult result = MongoDb.updateOne(filter, update);
        System.out.println("matched count = " + result.getMatchedCount());
    }
    
    @Test
    public void testUpdateMany(){
        Document filter = new Document();
        filter.append("gender", "female");
        
        //注意update文档里要包含"$set"字段
        Document update = new Document();
        update.append("$set", new Document("gender", "male"));
        UpdateResult result = MongoDb.updateMany(filter, update);
        System.out.println("matched count = " + result.getMatchedCount());
    }
    
    @Test
    public void testReplace(){
        Document filter = new Document();
        filter.append("name", "zhang");
        
        //注意:更新文档时,不需要使用"$set"
        Document replacement = new Document();
        replacement.append("value", 123);
        MongoDb.replace(filter, replacement);
    }
    
    @Test
    public void testDeleteOne(){
        Document filter = new Document();
        filter.append("name", "li");
        MongoDb.deleteOne(filter);
    }
    
    @Test
    public void testDeleteMany(){
        Document filter = new Document();
        filter.append("gender", "male");
        MongoDb.deleteMany(filter);
    }
}


官方帮助文档: https://docs.mongodb.org/getting-started/java/

©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页