zoukankan      html  css  js  c++  java
  • Java操作MongoDB

              java驱动程序是Mongodb中的驱动程序之一,也是比较成熟的Mongodb驱动程序之一,下面介绍了使用java连接、操作Mongodb。

              一、安装java驱动程序

                     Mongodb的java驱动程序是一个jar包,可以在:https://github.com/mongodb/mongo-java-driver/downloads 下载,下载的jar导入到eclipse的项目中即可。

              二、java操作Mongodb

                     java操作Mongodb常用的几个类:

                    Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等

                    DB:对应一个数据库,可以用来建立集合等操作

                    DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等

                    DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,是key-value的数据结构,用起来和HashMap是基本一致的。

                    DBCursor:用来遍历取得的数据,实现了Iterable和Iterator

    private static void mongodbOperating(){
    		try {
    			//有多种构造方法,选择一种(IP、port)
    			Mongo m = new Mongo( "192.168.21.111" , 27017 );
    			//选择数据库,如果没有这个数据库的话,会自动建立
    			DB  db = m.getDB( "mydb" );
    
    			//建立一个集合,和数据库一样,如果没有,会自动建立
    			DBCollection collection = db.getCollection("myCollectionTest");
    			
    			BasicDBObject doc = new BasicDBObject();
    	        doc.put("name", "MongoDB");
    	        doc.put("type", "database");
    	        doc.put("count", 1);
    
    	        BasicDBObject info = new BasicDBObject();
    	        info.put("x", 203);
    	        info.put("y", 102);
    	        doc.put("info", info);
    
    	        //插入一条数据,数据如下
    	        // {
    	        //	   "name" : "MongoDB",
    	        //	   "type" : "database",
    	        //	   "count" : 1,
    	        //	   "info" : {
    	        //	               x : 203,
    	        //	               y : 102
    	        //	             }
    	        //	}
                // 可以循环插入多条数据
    	        collection.insert(doc);
    	        //查找第一条数据,显示如下,_id是系统自动帮加上的,全局唯一
    	        //{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
    	        DBObject myDoc = collection.findOne();
    	        System.out.println(myDoc);
    	        
    	        //插入多条数据
    	        for (int i=0; i < 100; i++) {
    	        	collection.insert(new BasicDBObject().append("i", i));
    	        }
    
    	        
    	        //获取文档条数
    	        System.out.println(collection.getCount());
    	        
    	        //使用Cursor 获取所有文档
    	        DBCursor cursor = collection.find();
    	        try {
    	            while(cursor.hasNext()) {
    	                System.out.println(cursor.next());
    	            }
    	        } finally {
    	            cursor.close();
    	        }
    	        
    	        //查找操作,获取单条记录
    	        //{ "_id" : "49903677516250c1008d624e" , "i" : 71 }
    	        BasicDBObject query = new BasicDBObject();
    	        query.put("i", 71);
    	        cursor = collection.find(query);
    	        try {
    	            while(cursor.hasNext()) {
    	                System.out.println(cursor.next());
    	            }
    	        } finally {
    	            cursor.close();
    	        }
    
                //查找 i>50的项
    	        query = new BasicDBObject();
    	        query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
    	        cursor = collection.find(query);
    	        try {
    	            while(cursor.hasNext()) {
    	                System.out.println(cursor.next());
    	            }
    	        } finally {
    	            cursor.close();
    	        }
    
    
    	        //查找 20<i<=30
    	        query = new BasicDBObject();
    	        query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));  // i.e.   20 < i <= 30
    	        cursor = collection.find(query);
    	        try {
    	            while(cursor.hasNext()) {
    	                System.out.println(cursor.next());
    	            }
    	        } finally {
    	            cursor.close();
    	        }
    
    	        //修改 i=71的一项
    	        query = new BasicDBObject();
    	        query.put("i", 71);
    	        BasicDBObject update = new BasicDBObject();
    	        update.put("i", 710);
    	        DBObject dbobj = collection.findAndModify(query, update);
    	        System.out.println(dbobj);
    	        
    	        //修改 i=72的一项
    	        query = new BasicDBObject();
    	        query.put("i", 72);
    	        update = new BasicDBObject();
    	        update.put("i", 720);
    	        WriteResult result = collection.update(query, update);
    	        System.out.println(result);
    	        
    	        //删除i=61的项
    	        query = new BasicDBObject();
    	        query.put("i", 61);
    	        collection.findAndRemove(query);
    	        //删除i=62的项
    	        BasicDBObject remove = new BasicDBObject();
    	        remove.put("i", 62);
    	        collection.remove(remove);
    	        
                //创建索引 1为升序、-1为降序
    	        collection.createIndex(new BasicDBObject("i", 1));  // create index on "i", ascending
    
    	        //获取索引列表
    	        List<DBObject> list = collection.getIndexInfo();
    	        for (DBObject o : list) {
    	            System.out.println(o);
    	        }
    
    	        //获取数据库列表
    	        for (String s : m.getDatabaseNames()) {
    	            System.out.println(s);
    	        }
    	        //获取集合列表
    	        Set<String> colls = db.getCollectionNames();
    	        for (String s : colls) {
    	            System.out.println(s);
    	        }
    
    	        //删除数据库
    	        //m.dropDatabase("my_new_db");
    	        
    
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}


     

    http://www.mongodb.org/display/DOCS/Java+Tutorial

  • 相关阅读:
    git apply、git am打补丁.diff 和 .patch【转】
    RK3288 GPIO 输出问题【转】
    [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
    [RK3288][Android6.0] 调试笔记 --- 系统识别不同硬件版本方法【转】
    Android驱动开发之earlysuspend睡眠模式--实现代码【转】
    触摸屏唤醒实现【转】
    强加密RNGCryptoServiceProvider
    java中有类似C#里ref或out的功能吗?
    mysql中char与varchar的区别分析
    JVM再了解了解
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168085.html
Copyright © 2011-2022 走看看