上篇文章主要是一个简单测试连接的例子

这篇主要说一下基础的增删改差操作

github上也有小demo,很简单,适合初学者,地址:击跳转

1、首先创建maven项目,添加依赖

<!-- mongo驱动 -->
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>3.8.1</version>
    </dependency>

2、因为我们需要对数据库进行增删改差,所以需要获取到数据库服务MongoClient、以及连接数据库MongoDatabase

下面有一个工具类

package com.zhangchao.mongo.utils;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;


/**
 *  工具类  服务启动、获取数据库、关闭连接
 */
public class MongoUtils {
    private static final String ADDR = "mongodb://zhangch:root@localhost:27017/test";
    private static final String DBNAME = "test";

    /**
     *  获取服务
     * @return
     */
    public static MongoClient getMongoClient(){
        MongoClient client = null;
        try {
            System.out.println("--------------------------------获取服务--------------------------------");
            MongoClientURI uri = new MongoClientURI(ADDR);
            client = new MongoClient(uri);
        }catch ( Exception e ){
            System.out.println("--------------------------------无法获取服务--------------------------------");
            e.printStackTrace();
        }
        return client;
    }

    /**
     *  连接数据库
     * @param client
     * @return
     */
    public static MongoDatabase getDatabase(MongoClient client){
        MongoDatabase database = null;
        try {
            System.out.println("--------------------------------开始连接数据库--------------------------------");
            database = client.getDatabase(DBNAME);
        }catch ( Exception e ){
            System.out.println("--------------------------------连接数据库失败--------------------------------");
            e.printStackTrace();
        }
        return database;
    }

    /**
     * 关闭连接
     * @param client
     */
    public static void close(MongoClient client){
        try {
            if ( client != null ){
                client.close();
                System.out.println("--------------------------------关闭--------------------------------");
            }
        }catch ( Exception e ){
            e.printStackTrace();
        }
    }
}

3、获取集合进行增删改查

package com.zhangchao.mongo.main;

import com.mongodb.BasicDBObject;
import com.mongodb.Block;
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.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.zhangchao.mongo.utils.MongoUtils;
import org.bson.Document;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

/**
 *  测试CRUD的类
 */
public class MongoCRUD {

    /**
     *  测试添加 (添加一条)
     * @param database
     * @param collectionName
     */
    public void addOne(MongoDatabase database,String collectionName){
        //获取要操作的集合
        MongoCollection<Document> coll = database.getCollection(collectionName);
        Document doc = new Document();
        doc.append("name","gewas").append("age","26").append("gender","女").append("class","二班");
        coll.insertOne(doc);
    }
    /**
     *  测试添加 (添加多条)
     * @param database
     * @param collectionName
     */
    public void addMany(MongoDatabase database,String collectionName){
        //获取要操作的集合
        MongoCollection<Document> coll = database.getCollection(collectionName);
        List<Document> list = new ArrayList<>();
        for ( int i = 0 ; i < 5 ; i ++ ){
            Document doc = new Document();
            doc.append("name","yuas"+i).append("age",20+i).append("gender","女");
            list.add(doc);
        }
        coll.insertMany(list);
    }
    /**
     *  测试添加 (添加多条)
     * @param database
     * @param collectionName
     */
    public void addMany2(MongoDatabase database,String collectionName){
        //获取要操作的集合
        MongoCollection<Document> coll = database.getCollection(collectionName);
        List<Document> list = new ArrayList<>();
        for ( int i = 5 ; i < 10 ; i ++ ){
            Document doc = new Document();
            Map map = new HashMap();
            map.put("name","dssss"+i);
            map.put("age",20+i);
            map.put("gender","男");
            map.put("class","三班");
            doc.putAll(map);
            list.add(doc);
        }
        coll.insertMany(list);
    }
    /**
     *  测试查询 (查询数据库中所有数据)
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void findAll(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        FindIterable<Document> documents = coll.find();
        MongoCursor<Document> cursor = documents.iterator();
        while ( cursor.hasNext() ){
            System.out.println(cursor.next().toJson());
        }
    }

    /**
     *  测试查询 (从数据库中第三个数据开始查询,查询8个)
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void find(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        FindIterable<Document> documents = coll.find().skip(2).limit(8);
        MongoCursor<Document> cursor = documents.iterator();
        while ( cursor.hasNext() ){
            System.out.println(cursor.next().toJson());
        }
    }
    /**
     *  测试查询 (查询数据库中所有数据,按照年龄升序 1 升序,-1 降序)
     *  skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void find1(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        FindIterable<Document> documents = coll.find().sort(new BasicDBObject("age",1));
        MongoCursor<Document> cursor = documents.iterator();
        while ( cursor.hasNext() ){
            System.out.println(cursor.next().toJson());
        }
    }
    /**
     *  测试查询 (查询数据库中年龄为30,性别为男的数据)
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void find2(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject DBObject = new BasicDBObject("age","30");
        DBObject.append("gender", "男");
        FindIterable<Document> documents = coll.find(DBObject);
        MongoCursor<Document> cursor = documents.iterator();
        while ( cursor.hasNext() ){
            System.out.println(cursor.next().toJson());
        }
    }
    /**
     *  测试查询 (查询数据库中年龄大于10,小于30,并且性别为男的数据)
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void find3(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject DBObject = new BasicDBObject("gender","男");
        DBObject.put("age",new BasicDBObject("$lt","30").append("$gte","10"));
        FindIterable<Document> documents = coll.find(DBObject);
        documents.forEach(new Block<Document>() {
            @Override
            public void apply(Document document) {
                System.out.println(document.toJson());
            }
        });
    }
    /**
     *  测试查询 (查询数据库中姓名包含as的数据,不区分大小写)
     * @param database 操作的数据库
     * @param collectionName 操作的集合名
     */
    public void find4(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject DBObject = new BasicDBObject();
        Pattern compile = Pattern.compile("as");
        DBObject.put("name",new BasicDBObject("$regex",compile).append("$options","$i"));
        FindIterable<Document> documents = coll.find(DBObject);
        documents.forEach(new Block<Document>() {
            @Override
            public void apply(Document document) {
                System.out.println(document.toJson());
            }
        });
    }
    /**
     *  删除一个 (删除name是dssss3的数据)
     * @param database
     * @param collectionName
     */
    public void deleteOne(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject dbObject = new BasicDBObject();
        dbObject.append("name","dssss3");
        DeleteResult result = coll.deleteOne(dbObject);
        System.out.println("删除结果"+result.getDeletedCount());
    }

    /**
     *  删除多个 (删除性别是男,年龄大于22,小于28的数据)
     * @param database
     * @param collectionName
     */
    public void deleteMany(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject dbObject = new BasicDBObject("gender","男");
        dbObject.put("age",new BasicDBObject().append("$gt",22).append("$lt",28));
        DeleteResult result = coll.deleteMany(dbObject);
        System.out.println("删除结果"+result.getDeletedCount());
    }

    /**
     *  修改一个 (把年龄为29的 修改)
     * @param database
     * @param collectionName
     */
    public void updateOne(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject bson = new BasicDBObject("age", 29);
        BasicDBObject bson2 = new BasicDBObject();
        bson2.put("$set",new BasicDBObject("age",33).append("name","ssssd").append("gender","女").append("class","四班"));
        UpdateResult result = coll.updateOne(bson, bson2);
        System.out.println("修改结果"+result);
    }
    /**
     *  修改多个 (把年龄大于29的 性别都改为男 )
     * @param database
     * @param collectionName
     */
    public void updateMany(MongoDatabase database,String collectionName){
        MongoCollection<Document> coll = database.getCollection(collectionName);
        BasicDBObject bson = new BasicDBObject();
        bson.put("age",new BasicDBObject("$gt",29));
        BasicDBObject bson2 = new BasicDBObject();
        bson2.put("$set",new BasicDBObject("gender","男"));
        UpdateResult result = coll.updateMany(bson, bson2);
        System.out.println("修改结果"+result.getModifiedCount());
    }
    public static void main(String[] args) {
        String collectionName = "zhangchao";
        MongoClient client = MongoUtils.getMongoClient();
        MongoDatabase database = MongoUtils.getDatabase(client);
        MongoCRUD mongo = new MongoCRUD();
        mongo.findAll(database,collectionName);
        MongoUtils.close(client);

    }

}

这就是java连接mongo并进行增删改查