第51章:Java操作MongoDB-[Mongo-Java-2.x]

①范例:连接数据库

package cn.mldn.demo;

import com.mongodb.DB;

import com.mongodb.MongoClient;

public class MongoDemoA {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

 

MongoClient内部实现了一个连接池,默认初始化10个连接,MongoClient对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。

另外要注意,close方法将关闭当前所有活跃的连接,所以应该在确定不再使用MongoDB的时候才应该关闭。

       DB db = client.getDB("mldn");  // 连接数据库

 

1:数据库名区分大小写,另外如果数据库不存在,不会报错,而是新建一个

2: DB对象代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动回到连接池中。不需要我们手动调用代码放回池中。

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           for (String name : db.getCollectionNames()) {

               System.out.println("集合名字:" + name);

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

②范例:保存数据

package cn.mldn.demo;

import com.mongodb.BasicDBObject;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.MongoClient;

public class MongoDemoB {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol") ;    // 要操作的集合名字

           for (int x = 0 ; x < 100 ; x ++) {    // 循环保存数据

               BasicDBObject obj = new BasicDBObject() ;

               obj.append("deptno" , 1000 + x) ;   // 设置部门编号信息

               obj.append("dname" , "技术部 - " + x) ;

               obj.append("loc" , "北京 - " + x) ;

               col.insert(obj) ;   // 保存数据

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

新增

 

1:第一种方式,示例:

BasicDBObjectdata1 = new BasicDBObject();

data1.put("userId", "u1234"); 

data1.put("name", "name123");

或者data1.append("userId", "u1234").append("name", "name123");

users.insert(data1);

//或者users.save(data1);

2:第二种方式,示例:

BasicDBObjectBuilder data1=BasicDBObjectBuilder.start().add("userId","u234").add("name","name234");

users.insert(data1.get());

3:第三种方式,示例:

Map<String, Object> data1 = new HashMap<String, Object>();

data1.put("userId","u345");

users.insert(new BasicDBObject(data1));

4:第四种方式,示例:

String json = "{'userId': 'u456','name' : 'name456'}";

DBObject data1 = (DBObject)JSON.parse(json);

users.insert(data1);

 

③范例:数据读取

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoC {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol") ;    // 要操作的集合名字

           DBCursor cursor = col.find() ;  // 得到全部内容

           while (cursor.hasNext()) {

               DBObject obj = cursor.next() ;  // 得到每一个内容

               System.out.println("部门编号:" + obj.get("deptno") + ",名称:" + obj.get("dname"));

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

④范例:使用分页处理

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoD {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol") ;    // 要操作的集合名字

           DBCursor cursor = col.find().skip(0).limit(10) ;  // 得到全部内容

           while (cursor.hasNext()) {

               DBObject obj = cursor.next() ;  // 得到每一个内容

               System.out.println("部门编号:" + obj.get("deptno") + ",名称:" + obj.get("dname"));

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

⑤范例:设置查询条件

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoE {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol") ;    // 要操作的集合名字

           DBObject cond = new BasicDBObject() ;   // 准备设置查询过滤条件

           // 设置deptno的数据范围在1000 ~ 1020之间

           cond.put("deptno",new BasicDBObject("$gte",1000).append("$lte",1020)) ;

           // 设置之前所定义的查询条件

           DBCursor cursor = col.find(cond).skip(0).limit(50) ;  // 得到全部内容

           while (cursor.hasNext()) {

               DBObject obj = cursor.next() ;  // 得到每一个内容

               System.out.println("部门编号:" + obj.get("deptno") + ",名称:" + obj.get("dname"));

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

⑥范例:设置范围查询—— in

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoF {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol");    // 要操作的集合名字

           DBObject cond = new BasicDBObject();   // 准备设置查询过滤条件

           // 设置deptno的数据范围在1000 ~ 1020之间

           cond.put("deptno", new BasicDBObject("$in", new int[]{1001, 1003, 1005}));

           // 设置之前所定义的查询条件

           DBCursor cursor = col.find(cond).skip(0).limit(50);  // 得到全部内容

           while (cursor.hasNext()) {

               DBObject obj = cursor.next();  // 得到每一个内容

               System.out.println("部门编号:" + obj.get("deptno") + ",名称:" + obj.get("dname"));

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

⑦范例:执行模糊查询

package cn.mldn.demo;

import com.mongodb.*;

import java.util.regex.Pattern;

public class MongoDemoG {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol");    // 要操作的集合名字

           Pattern pattern = Pattern.compile("5") ;    // 设置过滤条件

           DBObject cond = new BasicDBObject();   // 准备设置查询过滤条件

           // 设置deptno的数据范围在1000 ~ 1020之间

           cond.put("dname", new BasicDBObject("$regex", pattern));

           // 设置之前所定义的查询条件

           DBCursor cursor = col.find(cond).skip(0).limit(50);  // 得到全部内容

           while (cursor.hasNext()) {

               DBObject obj = cursor.next();  // 得到每一个内容

               System.out.println("部门编号:" + obj.get("deptno") + ",名称:" + obj.get("dname"));

           }

       }

       client.close();     // 关闭数据库连接

   }

}

 

⑧范例:数据修改

package cn.mldn.demo;

import com.mongodb.*;

import java.util.regex.Pattern;

public class MongoDemoH {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol");    // 要操作的集合名字

           DBObject condA = new BasicDBObject();   // 准备设置要修改的过滤条件

           condA.put("deptno" , 1000) ;    // 设置修改的内容

           DBObject condB = new BasicDBObject() ;  // 修改器的设置

           condB.put("$set", new BasicDBObject("dname", "修改后的部门名称")) ;

           WriteResult result = col.update(condA, condB) ;

           System.out.println(result.getN());

       }

       client.close();     // 关闭数据库连接

   }

}

 

DBObject condition = new BasicDBObject("userId","u234");

users.update(condition, new BasicDBObject("userId","cc").append("name","cc"));

当然也可以使用修改器

users.update(condition, new BasicDBObject("$set",new

BasicDBObject("name","ccNew")));

 

⑨范例:多行数据的修改

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoI {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol");    // 要操作的集合名字

           DBObject condA = new BasicDBObject();   // 准备设置要修改的过滤条件

           condA.put("deptno",new BasicDBObject("$gte",1000).append("$lte",1020)) ;

           DBObject condB = new BasicDBObject() ;  // 修改器的设置

           condB.put("$set", new BasicDBObject("dname", "修改后的部门名称")) ;

           WriteResult result = col.updateMulti(condA, condB) ;

           System.out.println(result.getN());

       }

       client.close();     // 关闭数据库连接

   }

}

 

DBObject condition = new BasicDBObject("userId","u234");

users.update(condition, new BasicDBObject("userId","cc").append("name","cc"));

当然也可以使用修改器

users.update(condition, new BasicDBObject("$set",new

BasicDBObject("name","ccNew")));

 

⑩范例:删除数据

package cn.mldn.demo;

import com.mongodb.*;

public class MongoDemoJ {

   public static void main(String[] args) throws Exception {

       // 设置要连接的数据库的主机名称与端口号

       MongoClient client = new MongoClient("localhost", 27001);

       DB db = client.getDB("mldn");  // 连接数据库

       // 进行数据库的用户名与密码验证

       if (db.authenticate("hello", "happy".toCharArray())) {

           DBCollection col = db.getCollection("deptcol");    // 要操作的集合名字

           DBObject cond = new BasicDBObject();   // 准备设置要修改的过滤条件

           cond.put("deptno",new BasicDBObject("$gte",1000).append("$lte",1020)) ;

           WriteResult result = col.remove(cond) ;

           System.out.println(result.getN());

       }

       client.close();     // 关闭数据库连接

   }

}

users.remove(new BasicDBObject("userId","u1"));

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/Lucky-stars/p/10598458.html