어떻게 자바 로 MongoDB 를 조작 합 니까?

36006 단어 mongodb
지난 글 은 몽고 DB 의 콘 솔 에서 몽고 DB 의 데이터 조작 을 완 료 했 으 며, 이전 글 을 통 해 우 리 는 몽고 DB 에 대한 포괄 적 인 인식 과 이 해 를 갖 게 됐다 고 소개 했다.지금 우 리 는 자바 로 MongoDB 의 데 이 터 를 조작 할 것 이다.
개발 환경:
  • System:Windows
  • IDE:eclipse、MyEclipse 8
  • Database:mongoDB

  • 개발 의존 라 이브 러 리:
  • JavaEE5、mongo-2.5.3.jar、junit-4.8.2.jar
  • Email:[email protected]
  • Blog:http://blog.csdn.net/IBM_hoojo

  • 준비 작업
    1. 우선, mongoDB 가 자바 에 지원 하 는 드라이버 패 키 지 를 다운로드 합 니 다.
    드라이버 다운로드 주소:https://github.com/mongodb/mongo-java-driver/downloads
    mongoDB 의 자바 관련 지원, 기술:http://www.mongodb.org/display/DOCS/Java+Language+Center
    드라이버 원본 다운로드:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
    온라인 으로 원본 보기:https://github.com/mongodb/mongo-java-driver
    2. 아래 에 자바 프로젝트 프로젝트 프로젝트 를 만 들 고 다운로드 한 드라이버 패 키 지 를 가 져 옵 니 다.자바 에서 mongoDB 를 사용 할 수 있 습 니 다. 디 렉 터 리 는 다음 과 같 습 니 다.
    #FormatImgID_0#
    2. 자바 조작 MongoDB 예제
    이 예제 에 앞서 mongod. exe 서 비 스 를 시작 해 야 다음 프로그램 이 순조롭게 실 행 될 수 있 습 니 다.
    1. Simple Test. java 를 구축 하여 간단 한 mongoDB 데이터베이스 작업 을 완성 합 니 다.
    Mongo mongo = new Mongo();
    이렇게 해서 MongoDB 의 데이터베이스 연결 대상 을 만 들 었 습 니 다. 현재 기기 의 localhost 주소 에 기본적으로 연결 되 어 있 고 포트 는 27017 입 니 다.
    DB db = mongo.getDB(“test”);
    이렇게 해서 test 데이터 베 이 스 를 얻 었 습 니 다. 만약 mongoDB 에서 이 데이터 베 이 스 를 만 들 지 않 았 다 면 정상적으로 실행 할 수 있 습 니 다.이전 글 을 읽 어보 면 mongoDB 는 이 데이터 베 이 스 를 만 들 지 않 은 상태 에서 데이터 추가 작업 을 완성 할 수 있다 는 것 을 알 수 있다.추가 할 때 이 라 이브 러 리 가 없 으 면 mongoDB 는 현재 데이터 베 이 스 를 자동 으로 만 듭 니 다.
    db 를 얻 었 습 니 다. 다음 단 계 는 '집합 DB Collection' 을 얻 고 db 대상 의 getCollection 방법 을 통 해 완성 해 야 합 니 다.
    DBCollection users = db.getCollection("users");
    이렇게 해서 DB Collection 을 얻 었 습 니 다. 이것 은 우리 데이터베이스 의 '표' 에 해당 합 니 다.
    모든 데이터 조회
    
     
    1. package  com.hoo.test;  
    2.    
    3. import  java.net.UnknownHostException;  
    4. import  com.mongodb.DB;  
    5. import  com.mongodb.DBCollection;  
    6. import  com.mongodb.DBCursor;  
    7. import  com.mongodb.Mongo;  
    8. import  com.mongodb.MongoException;  
    9. import  com.mongodb.util.JSON;  
    10.    
    11. /**  
    12.  * function: MongoDB   
    13.  * @author hoojo  
    14.  * @createDate 2011-5-24  02:42:29  
    15.  * @file SimpleTest.java  
    16.  * @package com.hoo.test  
    17.  * @project MongoDB  
    18.  * @blog http://blog.csdn.net/IBM_hoojo  
    19.  * @email [email protected]  
    20.  * @version 1.0  
    21.  */  
    22. public   class  SimpleTest {  
    23.    
    24.      public   static   void  main(String[] args)  throws  UnknownHostException, MongoException {  
    25.         Mongo mg =  new  Mongo();  
    26.          // Database  
    27.          for  (String name : mg.getDatabaseNames()) {  
    28.             System.out.println( "dbName: "  + name);  
    29.         }  
    30.           
    31.         DB db = mg.getDB( "test" );  
    32.          //  
    33.          for  (String name : db.getCollectionNames()) {  
    34.             System.out.println( "collectionName: "  + name);  
    35.         }  
    36.           
    37.         DBCollection users = db.getCollection( "users" );  
    38.           
    39.          //  
    40.         DBCursor cur = users.find();  
    41.          while  (cur.hasNext()) {  
    42.             System.out.println(cur.next());  
    43.         }  
    44.         System.out.println(cur.count());  
    45.         System.out.println(cur.getCursorId());  
    46.         System.out.println(JSON.serialize(cur));  
    47.     }  
    48. }  

    2、 CRUD 작업 을 완료 하려 면 먼저 MongoDB4CRUDTest. java 를 만 듭 니 다. 기본 테스트 코드 는 다음 과 같 습 니 다. 
    
     
    1. package  com.hoo.test;    
    2.      
    3.  
    4. import  java.net.UnknownHostException;    
    5. import  java.util.ArrayList;    
    6. import  java.util.List;    
    7. import  org.bson.types.ObjectId;    
    8. import  org.junit.After;    
    9. import  org.junit.Before;    
    10. import  org.junit.Test;    
    11. import  com.mongodb.BasicDBObject;    
    12. import  com.mongodb.Bytes;    
    13. import  com.mongodb.DB;    
    14. import  com.mongodb.DBCollection;    
    15. import  com.mongodb.DBCursor;    
    16. import  com.mongodb.DBObject;    
    17. import  com.mongodb.Mongo;    
    18. import  com.mongodb.MongoException;    
    19. import  com.mongodb.QueryOperators;    
    20. import  com.mongodb.util.JSON;    
    21.      
    22. /**    
    23.  * function: MongoDB CRUD     
    24.  * @author hoojo    
    25.  * @createDate 2011-6-2  03:21:23    
    26.  * @file MongoDB4CRUDTest.java    
    27.  * @package com.hoo.test    
    28.  * @project MongoDB    
    29.  * @blog http://blog.csdn.net/IBM_hoojo    
    30.  * @email [email protected]    
    31.  * @version 1.0    
    32.  */    
    33. public   class  MongoDB4CRUDTest {    
    34.         
    35.      private  Mongo mg =  null ;    
    36.      private  DB db;    
    37.      private  DBCollection users;    
    38.         
    39.      @Before    
    40.      public   void  init() {    
    41.          try  {    
    42.             mg =  new  Mongo();    
    43.              //mg = new Mongo("localhost", 27017);    
    44.         }  catch  (UnknownHostException e) {    
    45.             e.printStackTrace();    
    46.         }  catch  (MongoException e) {    
    47.             e.printStackTrace();    
    48.         }    
    49.          // temp DB; ,mongodb     
    50.         db = mg.getDB( "temp" );    
    51.          // users DBCollection; ,mongodb     
    52.         users = db.getCollection( "users" );    
    53.     }    
    54.         
    55.  
    56.      @After    
    57.      public   void  destory() {    
    58.          if  (mg !=  null )    
    59.             mg.close();    
    60.         mg =  null ;    
    61.         db =  null ;    
    62.         users =  null ;    
    63.         System.gc();    
    64.     }    
    65.      public   void  print(Object o) {    
    66.         System.out.println(o);    
    67.     }    
    68. }  

     
    3. 조작 추가
    작업 을 추가 하기 전에 우 리 는 모든 데 이 터 를 조회 하기 위해 조회 방법 을 써 야 한다.코드 는 다음 과 같 습 니 다:
    
     
    1. /**  
    2.  * function:    
    3.  * @author hoojo  
    4.  * @createDate 2011-6-2  03:22:40  
    5.  */  
    6. private   void  queryAll() {  
    7.     print( " users :" );  
    8.      //db  
    9.     DBCursor cur = users.find();  
    10.      while  (cur.hasNext()) {  
    11.         print(cur.next());  
    12.     }  
    13. }  
    14.    
    15. @Test  
    16. public   void  add() {  
    17.      //  
    18.     queryAll();  
    19.     print( "count: "  + users.count());  
    20.       
    21.     DBObject user =  new  BasicDBObject();  
    22.     user.put( "name" "hoojo" );  
    23.     user.put( "age" 24 );  
    24.      //users.save(user) ,getN()  
    25.      //print(users.save(user).getN());  
    26.       
    27.      // , ,  
    28.     user.put( "sex" " " );  
    29.     print(users.save(user).getN());  
    30.       
    31.      // , Array  
    32.     print(users.insert(user,  new  BasicDBObject( "name" "tom" )).getN());  
    33.       
    34.      // List  
    35.     List list =  new  ArrayList();  
    36.     list.add(user);  
    37.     DBObject user2 =  new  BasicDBObject( "name" "lucy" );  
    38.     user.put( "age" 22 );  
    39.     list.add(user2);  
    40.      // List  
    41.     print(users.insert(list).getN());  
    42.       
    43.      // ,  
    44.     print( "count: "  + users.count());  
    45.     queryAll();  

    4. 데이터 삭제
    
     
    1. @Test  
    2. public   void  remove() {  
    3.     queryAll();  
    4.     print( " id = 4de73f7acd812d61b4626a77:"  + users.remove( new  BasicDBObject( "_id" new  ObjectId( "4de73f7acd812d61b4626a77" ))).getN());  
    5.     print( "remove age >= 24: "  + users.remove( new  BasicDBObject( "age" new  BasicDBObject( "$gte" 24 ))).getN());  

    5. 데이터 수정
    
     
    1. @Test  
    2. public   void  modify() {  
    3.     print( " :"  + users.update( new  BasicDBObject( "_id" new  ObjectId( "4dde25d06be7c53ffbd70906" )),  new  BasicDBObject( "age" 99 )).getN());  
    4.     print( " :"  + users.update(  
    5.              new  BasicDBObject( "_id" new  ObjectId( "4dde2b06feb038463ff09042" )),   
    6.              new  BasicDBObject( "age" 121 ),  
    7.              true , // ,  
    8.              false //  
    9.             ).getN());  
    10.     print( " :"  + users.update(  
    11.              new  BasicDBObject( "name" "haha" ),   
    12.              new  BasicDBObject( "name" "dingding" ),  
    13.              true , // ,  
    14.              true //false ,true  
    15.             ).getN());  
    16.       
    17.      // 、 ,  
    18.      //print(" :" + coll.updateMulti(new BasicDBObject("_id", new ObjectId("4dde23616be7c19df07db42c")), new BasicDBObject("name", "199")));  

     
    6. 조회 데이터
    
     
    1. @Test  
    2. public   void  query() {  
    3.      //  
    4.      //queryAll();  
    5.       
    6.      // id = 4de73f7acd812d61b4626a77  
    7.     print( "find id = 4de73f7acd812d61b4626a77: "  + users.find( new  BasicDBObject( "_id" new  ObjectId( "4de73f7acd812d61b4626a77" ))).toArray());  
    8.       
    9.      // age = 24  
    10.     print( "find age = 24: "  + users.find( new  BasicDBObject( "age" 24 )).toArray());  
    11.       
    12.      // age >= 24  
    13.     print( "find age >= 24: "  + users.find( new  BasicDBObject( "age" new  BasicDBObject( "$gte" 24 ))).toArray());  
    14.     print( "find age <= 24: "  + users.find( new  BasicDBObject( "age" new  BasicDBObject( "$lte" 24 ))).toArray());  
    15.       
    16.     print( " age!=25:"  + users.find( new  BasicDBObject( "age" new  BasicDBObject( "$ne" 25 ))).toArray());  
    17.     print( " age in 25/26/27:"  + users.find( new  BasicDBObject( "age" new  BasicDBObject(QueryOperators.IN,  new   int [] {  25 26 27  }))).toArray());  
    18.     print( " age not in 25/26/27:"  + users.find( new  BasicDBObject( "age" new  BasicDBObject(QueryOperators.NIN,  new   int [] {  25 26 27  }))).toArray());  
    19.     print( " age exists  :"  + users.find( new  BasicDBObject( "age" new  BasicDBObject(QueryOperators.EXISTS,  true ))).toArray());  
    20.       
    21.     print( " age :"  + users.find( null new  BasicDBObject( "age" true )).toArray());  
    22.     print( " :"  + users.find( null new  BasicDBObject( "age" true ),  0 2 ).toArray());  
    23.     print( " :"  + users.find( null new  BasicDBObject( "age" true ),  0 2 , Bytes.QUERYOPTION_NOTIMEOUT).toArray());  
    24.       
    25.      // ,  
    26.     print( "findOne: "  + users.findOne());  
    27.     print( "findOne: "  + users.findOne( new  BasicDBObject( "age" 26 )));  
    28.     print( "findOne: "  + users.findOne( new  BasicDBObject( "age" 26 ),  new  BasicDBObject( "name" true )));  
    29.       
    30.      // 、  
    31.     print( "findAndRemove  age=25 , : "  + users.findAndRemove( new  BasicDBObject( "age" 25 )));  
    32.       
    33.      // age=26 , name Abc  
    34.     print( "findAndModify: "  + users.findAndModify( new  BasicDBObject( "age" 26 ),  new  BasicDBObject( "name" "Abc" )));  
    35.     print( "findAndModify: "  + users.findAndModify(  
    36.          new  BasicDBObject( "age" 28 ),  // age=28  
    37.          new  BasicDBObject( "name" true ),  // name  
    38.          new  BasicDBObject( "age" true ),  // age  
    39.          false // ,true  
    40.          new  BasicDBObject( "name" "Abc" ),  // , name Abc  
    41.          true ,   
    42.          true ));  
    43.       
    44.     queryAll();  

    mongoDB 는 공동 조회, 하위 조 회 를 지원 하지 않 습 니 다. 이것 은 우리 가 프로그램 에서 완성 해 야 합 니 다.검색 결 과 를 자바 검색 에 집합 하여 필요 한 필 터 를 하면 됩 니 다.
    7. 기타 조작
    
     
    1. public   void  testOthers() {  
    2.     DBObject user =  new  BasicDBObject();  
    3.     user.put( "name" "hoojo" );  
    4.     user.put( "age" 24 );  
    5.       
    6.      //JSON            
    7.     print( "serialize: "  + JSON.serialize(user));  
    8.      //  
    9.     print( "parse: "  + JSON.parse( "{ \"name\" : \"hoojo\" , \"age\" : 24}" ));  
    10.       
    11.     print( " temp Collection : "  + db.collectionExists( "temp" ));  
    12.       
    13.      //  
    14.      if  (!db.collectionExists( "temp" )) {  
    15.         DBObject options =  new  BasicDBObject();  
    16.         options.put( "size" 20 );  
    17.         options.put( "capped" 20 );  
    18.         options.put( "max" 20 );  
    19.         print(db.createCollection( "account" , options));  
    20.     }  
    21.       
    22.      // db  
    23.     db.setReadOnly( true );  
    24.       
    25.      //  
    26.     db.getCollection( "test" ).save(user);  

    자, 여기 에는 기본적으로 이렇게 많은 자바 가 MongoDB 를 조작 하 는 방법 을 소개 한다.다른 것 은 네가 많이 연구 해 야 한다.위 에서 MongoDB 를 조작 하 는 방법 은 모두 자주 사용 하 는 방법 으로 비교적 간단 하 다.
    원본 링크:http://www.cnblogs.com/hoojo/archive/2011/06/02/2068665.html

    좋은 웹페이지 즐겨찾기