MongoDB_Java操作实例

public class MyMongo{    

    private void test() {    
        // 1.获取连接:MongoClient       
        MongoCredential credential = MongoCredential.createCredential("user","database","password".toCharArray());     //(user,database,password)
        MongoClient mongoClient = new MongoClient(new ServerAddress("192.168.6.186", 27017), Arrays.asList(credential));

        // 2.获取数据库:MongoDatabase    
        MongoDatabase database = mongoClient.getDatabase("mydb");    

        //3. 进入某个文档集:MongoCollection    
        MongoCollection<Document> collection = database.getCollection("test");    

        //4.插入数据:insertOne(),insertMany()  
        Document doc = new Document("name", "MongoDB")    
         .append("type", "database").append("count", 1)    
         .append("info", new Document("x", 203).append("y", 102));    

        collection.insertOne(doc);    

        List<Document> documents = new ArrayList<Document>();    
        for (int i = 0; i < 100; i++) {    
            documents.add(new Document("i", i));     
        } 

        collection.insertMany(documents);   

        //5.读取数据  
        System.out.println(collection.count());     
        Document myDoc = collection.find().first();    
        System.out.println(myDoc.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(cur.toJson());    
         }    

         //③ 根据条件获取某部分文档  
         Document myDoc = collection.find(eq("i", 71)).first();    
         System.out.println(myDoc.toJson());    

         // ④通过查询语句一次性获取多个数据    
         Block<Document> printBlock = new Block<Document>() {    
             @Override    
             public void apply(final Document document) {    
                 System.out.println(document.toJson());    
             }    
          };    

         // 获得所有大于50的    
         collection.find(gt("i", 50)).forEach(printBlock);    

         // 大于50 小于 100    
         collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);    

         // 对输出文档进行排序,-1为递减,1为递增    
         Document myDoc = collection.find(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());    

         //6.修改数据库中的数据   
         // $inc 对指定的元素加    
         // $mul 乘    
         // $rename 修改元素名称    
         // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改    
         // $set 修改指定元素的值    
         // $unset 移除特定的元素    
         // $min 如果原始数据更大则不修改,否则修改为指定的值    
         // $max 与$min相反    
         // $currentDate 修改为目前的时间    

         collection.updateOne(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(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());    
         }    

         //7.删除数据 
         // 删除第一个符合条件的数据    
         collection.deleteOne(eq("i", 110));    

         //获取全部文档,可以看到没有110这个数了        
         // 删除所有符合条件的数据,并且返回结果    
         DeleteResult deleteResult = collection.deleteMany(gte("i", 100));    

         // 输出删除的行数    
         System.out.println(deleteResult.getDeletedCount());    

         //获取全部文档,所有i>=100的数据都没了    
         //8. 程序块,一次执行多条语句
         // 按照语句先后顺序执行    
         collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)), 
         new InsertOneModel<>(new Document("_id", 5)),new InsertOneModel<>(new Document("_id", 6)),    
         new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))), 
         new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3), 
         new Document("_id", 3).append("x", 4))));     

         // 不按照语句先后顺序执行    
         collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)), 
         new InsertOneModel<>(new Document("_id", 5)), new InsertOneModel<>(new Document("_id", 6)),    
         new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))), 
         new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3), 
         new Document("_id", 3).append("x", 4))), new BulkWriteOptions().ordered(false));    

         // 关闭数据库连接    
         mongoClient.close();    
      }    
      public static void main(String[] args) {    
        MyMongo mymongo= new MyMongo();    
        mymongo.test();    
      }  
 }    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值