3. 示例代码:
- /**
- * MongoDBTest
- * MongoDB java api的初步使用示例
- * 此次只介绍一下insert和query(基本单collection查询)两种操作
- */
- package com.labci.mongodb.test;
- import java.net.UnknownHostException;
- import java.util.Iterator;
- import java.util.regex.Pattern;
- import com.mongodb.BasicDBObject;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.DBObject;
- import com.mongodb.Mongo;
- import com.mongodb.MongoException;
- /**
- * @author Bill Tu(tujiyue/iwtxokhtd)
- * May 21, 2011[12:06:41 PM]
- *
- */
- public class MongoDBJavaAPITest {
- private static final String HOST = "192.168.1.86";
- private static final int PORT = 27017;
- private static final String USER = "iwtxokhtd";
- private static final String PASSWORD = "123456";
- private static final String DB_NAME = "test";
- private static final String COLLECTION = "data_test";
- private static final int SIZE = 10;
- /**
- * 进行测试
- * @throws Exception
- */
- private static void initTest() throws Exception{
- try {
- Mongo conn=new Mongo(HOST,PORT);//建立数据库连接
- DB testDB=conn.getDB(DB_NAME);//取得test数据库
- /**
- * 如果test数据库没有设定用户权限认证,则无需下面的验证
- */
- boolean loginSuccess=testDB.authenticate(USER, PASSWORD.toCharArray());
- if(!loginSuccess){
- throw new Exception("登录"+DB_NAME+"验证失败,请确认用户名和密码");
- }
- /**
- * 如果COLLECTION不存在,则MongoDB会自动为你创建此collection
- */
- DBCollection collection=testDB.getCollection(COLLECTION);
- //开始插入数据操作
- insertData(collection,SIZE);
- //查询操作
- findData(collection);
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (MongoException e) {
- e.printStackTrace();
- }
- }
- /**
- * 向collection插入size条记录
- */
- private static void insertData(DBCollection collection,int size){
- long beginTime=System.currentTimeMillis();
- for(int i=1;i<=size;i++){
- BasicDBObject basic=new BasicDBObject();
- basic.put("userId", "1001017"+i);
- basic.put("userName", "Bill Tu"+i);
- basic.put("gender", "m"+i);
- BasicDBObject interests=new BasicDBObject();
- interests.put("game", "game"+i);
- interests.put("ball", "ball"+i);
- interests.put("other", "nothing"+i);
- basic.put("interests", interests);
- collection.insert(basic);
- }
- long endTime=System.currentTimeMillis();
- System.out.println("插入用时:"+(endTime-beginTime)+" ms");
- }
- /**
- * 根据指定collection单collection查询
- *
- */
- private static void findData(DBCollection collection){
- //查询所有记录
- long beginTime=System.currentTimeMillis();
- DBCursor queryAll=collection.find();
- System.out.println("所有记录:");
- for(Iterator<DBObject> iter=queryAll.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- long endTime=System.currentTimeMillis();
- System.out.println("查询所有记录用时:"+(endTime-beginTime)+" ms");
- //只看第一条记录
- DBObject queryFirstRecord=collection.findOne();
- System.out.println("第一条记录:"+queryFirstRecord);
- //根据单条件查询
- DBObject singleCondition_query=new BasicDBObject();
- //根据userId=10010172条件来查
- singleCondition_query.put("userId", "10010172");
- DBCursor singleQueryResult=collection.find(singleCondition_query);
- for(Iterator<DBObject> iter=singleQueryResult.iterator();iter.hasNext();){
- System.out.println("按单条件查询结果:"+iter.next());
- }
- //根据复合条件来查询
- DBObject compoundCondition_query=new BasicDBObject();
- //根据userId=10010171&userName=Bill Tu1来查询
- compoundCondition_query.put("userId", "10010171");
- compoundCondition_query.put("userName", "Bill Tu1");
- DBCursor compoundQueryResult=collection.find(compoundCondition_query);
- System.out.println("按复合条件查询结果:");
- for(Iterator<DBObject> iter=compoundQueryResult.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- //in查询
- DBObject in_data=new BasicDBObject("$in",new Object[]{"10010171","10010172"});
- //根据userId in('10010171','10010172')查询
- DBObject in_query=new BasicDBObject();
- in_query.put("userId", in_data);
- DBCursor inQueryResult=collection.find(in_query);
- System.out.println("按in条件查询结果:");
- for(Iterator<DBObject> iter=inQueryResult.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- //模糊查询
- DBObject fuzzy_query=new BasicDBObject();
- String keyWord="10010171";
- Pattern pattern = Pattern.compile("^" + keyWord + ".*$", Pattern.CASE_INSENSITIVE);
- //根据userId like 1001017%查询
- fuzzy_query.put("userId", pattern);
- DBCursor fuzzyQueryResult=collection.find(fuzzy_query);
- System.out.println("按模糊条件查询结果:");
- for(Iterator<DBObject> iter=fuzzyQueryResult.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- try {
- initTest();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }