Java操作MongoDB

11年前

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