• 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();
            }
        }
    }
  • 相关阅读:
    用户使用调查报告
    Beta阶段敏捷冲刺五
    Beta阶段敏捷冲刺四
    Beta阶段敏捷冲刺三
    Beta阶段敏捷冲刺二
    Beta阶段敏捷冲刺一
    软工网络15团队作业8——Beta阶段敏捷冲刺
    Beta阶段Scrum 冲刺博客合集
    软工网络15Alpha阶段敏捷冲刺博客集合
    项目复审——Beta阶段
  • 原文地址:https://www.cnblogs.com/laijie/p/5239135.html
Copyright © 2020-2023  润新知