Package test.feed

Source Code of test.feed.TestMongoDB

package test.feed;
import java.net.UnknownHostException;
import java.util.Iterator;
import java.util.regex.Pattern;

import org.junit.Test;

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;

public class TestMongoDB {
  private String HOST="localhost";
  private Integer PORT=27017;
  private String DB_NAME="skyline";
  private String USER="skyline";
  private String PASSWORD="skyline";
  private String COLLECTION="testCollection";
//  private Integer SIZE=1000;
 
  @Test
   public  void initTest() throws Exception{  
          try {  
            long beginTime=System.currentTimeMillis();
              Mongo conn=new Mongo(HOST,PORT);//建立数据库连接  
            
              long endTime=System.currentTimeMillis();
              DB testDB=conn.getDB(DB_NAME);//取得test数据库
             
              System.out.println(endTime-beginTime);
              /** 
               * 如果test数据库没有设定用户权限认证,则无需下面的验证 
               */ 
              boolean loginSuccess=testDB.authenticate(USER, PASSWORD.toCharArray());  
              if(!loginSuccess){  
                  throw new Exception("登录"+DB_NAME+"验证失败,请确认用户名和密码");  
              }  
              testDB=conn.getDB(DB_NAME);//取得test数据库  
              /** 
               * 如果COLLECTION不存在,则MongoDB会自动为你创建此collection 
               */ 
              DBCollection collection=testDB.getCollection(COLLECTION);  
              //开始插入数据操作  
              //insertData(collection,SIZE);  
              //查询操作  
              findData(collection);  
                
          } catch (UnknownHostException e) {  
              e.printStackTrace();  
          } catch (MongoException e) {  
              e.printStackTrace();  
          }  
      }
   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());  
            iter.next();
          }  
          long endTime=System.currentTimeMillis();  
          System.out.println("查询所有记录用时:"+(endTime-beginTime)+" ms");  
            
          //只看第一条记录  
          DBObject queryFirstRecord=collection.findOne();  
          System.out.println("第一条记录:"+queryFirstRecord);  
            
          //根据单条件查询  
          beginTime=System.currentTimeMillis();  
          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());  
          }  
          endTime=System.currentTimeMillis();  
          System.out.println("查询所有记录用时:"+(endTime-beginTime)+" ms");  
            
          //根据复合条件来查询  
          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());  
          }  
            
      }  
}
TOP

Related Classes of test.feed.TestMongoDB

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.