MongoDB增删改查

package com.founder.mongo2bean;

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

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

import com.mongodb.BasicDBObject;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.DeleteOneModel;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.ReplaceOneModel;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;


public class Main {
    /**
     * mongo客户端
     */
    private MongoClient mongoClient =null;
    /**
     * 数据库
     */
    private MongoDatabase database = null;
    /**
     * 集合
     */
    private MongoCollection<Document> collection = null;
    @Before
    public void init(){
        //获取连接
         mongoClient = new MongoClient("localhost",27017);
        //获取数据库
         database = mongoClient.getDatabase("test");
        //进入某个文档集(大小写敏感)
        collection = database.getCollection("Doc");
    }
    
    //单条数据插入测试
    @Test
    public void insertOneTest(){
        Document doc =new Document("name","MongoDB")
        .append("type", "database").append("count", 1)
        .append("info", new Document("x",203).append("y", 102));
        collection.insertOne(doc);
    }
    //多条数据插入测试
    @Test
    public void insertManyTest(){
        List<Document> docs = new ArrayList<Document>();
        for(int i=0;i<100;i++){
            Document doc =new Document("name","MongoDB"+i)
            .append("type", "database").append("count", 1)
            .append("i", i)
            .append("info", new Document("x",203).append("y", 102));
            docs.add(doc);
        }
        collection.insertMany(docs);
    }
    
    /**
     * 删除数据
     */
    @Test
    public void deleteTest(){
        //删除所有符合条件的数据
        DeleteResult deleteResult =collection.deleteMany(Filters.gte("i", 50));
        System.out.println(deleteResult.getDeletedCount());
        
        //删除第一个符合条件的数据
        //collection.deleteOne(Filters.eq("i",5));

    }
    
    /**
     * 修改数据 
     */
    // 修改时的参数:  
    // $inc 对指定的元素加  
    // $mul 乘  
    // $rename 修改元素名称  
    // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改  
    // $set 修改制定元素的值  
    // $unset 移除特定的元素  
    // $min 如果原始数据更大则不修改,否则修改为指定的值  
    // $max 与$min相反  
    // $currentDate 修改为目前的时间  
    @Test
    public void updateTest(){
        
  
       /* // //修改第一个符合条件的数据  
        // $set 为修改  
         collection.updateOne(Filters.eq("i", 10), new Document("$set", new  
        Document("i", 110)));  
        // // 获取全部文档,可以看到以前10的地方变成了110  
         for (Document cur : collection.find()) {  
         System.out.println(cur.toJson());  
         }  */
  
        // 批量修改数据并且返回修改的结果,讲所有小于100的结果都加100  
         UpdateResult updateResult = collection.updateMany(Filters.lt("i", 100),  
         new Document("$inc", new Document("i", 100)));  
         // 显示发生变化的行数  
         System.out.println(updateResult.getModifiedCount());  
        // // 获取全部文档,可以看到除了刚才修改的110其他的全为了100  
         for (Document cur : collection.find()) {  
         System.out.println(cur.toJson());  
         }  
  
    }
    
    
    
    //数据读取
    @Test
    public void QueryTest(){
        //获取文档总量
        //System.out.println("count:"+collection.count());
        
        //查询集合里面第一个文档
        //Document doc = collection.find().first();
        //System.out.println("FirstDoc:"+doc.toJson());
        
        //获取集合中所有文档
        //游标
        /*MongoCursor<Document> cursor = collection.find().iterator();
        try{
        while(cursor.hasNext()){
            System.out.println(cursor.next().toJson());
        }
        }finally{
            cursor.close();
        }*/
        
        /*//获取全部文档的其他方法
        for(Document cur:collection.find()){
            System.out.println("Doc:"+cur.toJson());
        }*/
        /*Document doc1 =new Document("name","MongoDB21");
        Document myDoc = collection.find(doc1).first();  
          */
        /*Document myDoc = collection.find(Filters.eq("i", 5)).first();
        System.out.println(myDoc.toJson()); */
       
        
        //通过查询语句一次性获取多个数据
        Block<Document> printBlock = new Block<Document>() {

            @Override
            public void apply(Document doc) {
                // TODO Auto-generated method stub
                System.out.println(doc.toJson());
            }
            
        };
        //gt("i","50")
        //collection.find(Filters.gt("i",10)).forEach(printBlock);
        //collection
        //对输出文档进性排序 -1为递减,1为递增
        /*Document myDoc =collection.find(Filters.exists("i"))
                .sort(new BasicDBObject("i", -1)).first();
        System.out.println(myDoc.toJson());*/
        
        // 选择性输出结果中的元素,0为不显示,1为显示 (两者为互斥关系,不能同时使用) 
         BasicDBObject exclude = new BasicDBObject();  
         exclude.append("_id", 0);  
          exclude.append("count", 0);  
         //exclude.append("name", 1);  
         //exclude.append("info", 1);  
         Document myDoc = collection.find().projection(exclude).first();  
         System.out.println(myDoc.toJson()); 
    }
    
    
    
   
    @After
    public void destory() {
        if(mongoClient!=null){
            mongoClient.close();
        }
    }
}
原文地址:https://www.cnblogs.com/laijie/p/5239135.html