몽고 DB 기초

몽고 DB 기초

1. 몽고 디비 서버 가동

mongodb 폴더 내의 bin 폴더 내에 들어가서 mongod –dbpath c:\mongodb\data 라고 쓰면 됨

 

2. 몽고 디비 접근(1/2)

몽고 디비 서버를 가동한 상태에서 새로운 cmd 창을 열어서 접근해야 함.

mongodb 폴더 내의 bin 폴더에 들어가서 mongo 라고 쓰면 됨.

 

3. 몽고 DB 접근(2/2)

“show dbs” 를 통해 소유한 db목록을 보고, “use db명” 을 통해서 원하는 db에 접근한 후, insert, update, delete 등을 실행할 수 있음.


■ 가지고 있는 db목록을 출력
show dbs

■ db명을 사용
use db명
ex) use test
     use mydb

■ 데이터를 인서트
db.member.insert({no:1,name:”hong”,tel:”1111-1111″,addr:”seoul”})
※ 중괄호 안쪽이 1개의 row임

■ 모든 데이터를 읽어옴(SELECT * FROM member)
db.member.find()

■ 조건에 맞는 데이터를 읽어옴 (SELECT * FROM member WHERE ~)
db.member.find({no:1})

4. 자바에서 몽고 DB 접근하기

4-0. app.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=”http://www.springframework.org/schema/beans
 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
 xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd“>

<bean id=”dao” class=”com.dao.MemberDAO”/>
</beans>

4-1. 커넥션 (생성자에서 처리)

public class MemberDAO {
 private MongoClient mc;//Connection
 private DB db;//ORCL (mydb)
 private DBCollection dbc;//table
 
 //db.member.find()
 public MemberDAO(){
  try{
   mc=new MongoClient(“localhost”);//연결
   db=mc.getDB(“test”);
   dbc=db.getCollection(“member”);
   //dbc.find()

  }catch(Exception ex){System.out.println(ex.getMessage());}
 }

}

4-2. 셀렉트 (리스트로 받아오기)

public List<MemberVO> memberAllData(){
  List<MemberVO> list=new ArrayList<MemberVO>();
  try{
   // dbc.find()
   //DBCursor cursor=dbc.find();
   DBCursor cursor=dbc.find().sort(new BasicDBObject(“no”,-1));
           //ORDER BY no
           // -1(DESC)  1(ASC)
   
   while(cursor.hasNext()){
    BasicDBObject obj=(BasicDBObject)cursor.next();//rs.next()와 동일. 중괄호{} 단위로 가져옴
    //{no,name,tel,addr}
    MemberVO vo=new MemberVO();
    vo.setNo(obj.getInt(“no”));
    vo.setName(obj.getString(“name”));
    vo.setTel(obj.getString(“tel”));
    vo.setAddr(obj.getString(“addr”));
    //인트와 스트링, 두 가지 뿐이다(날짜형은 없다)
    list.add(vo);
   }
   
  }catch(Exception ex){System.out.println(ex.getMessage());}
  return list;
 }

——————————

 public static void main(String[] args) {
  ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
  MemberDAO dao=(MemberDAO)app.getBean(“dao”);
  //그냥 출력
  List<MemberVO> list=dao.memberAllData();
  for(MemberVO vo:list){
   System.out.println(vo.getNo()+” “+vo.getName()+” “+vo.getTel()+” “+vo.getAddr());
  }

}

4-3. 인서트

public void insert(MemberVO vo){
  try{
   DBCursor cursor=dbc.find();
   int max=1;
   while(cursor.hasNext()){
    BasicDBObject obj=(BasicDBObject)cursor.next();
    int no=obj.getInt(“no”);
    if(max<no){
     max=no;
    }
   }
   cursor.close();
   BasicDBObject obj=new BasicDBObject();//DB Object 1개가 블록 1개임
   obj.put(“no”, max+1);
   obj.put(“name”, vo.getName());
   obj.put(“tel”, vo.getTel());
   //{}
   obj.put(“addr”, vo.getAddr());
   dbc.insert(obj);
   
  }catch(Exception ex){System.out.println(ex.getMessage());}
 }​

—————————

 public static void main(String[] args) {
  ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
  MemberDAO dao=(MemberDAO)app.getBean(“dao”);
  //인서트
  MemberVO vo=new MemberVO();
  vo.setName(“박문수”);
  vo.setTel(“3333-3333”);
  vo.setAddr(“강원”);
  dao.insert(vo);
  System.out.println(“데이터 추가 완료”);

}

4-4. 검색

public List<MemberVO> memberFindData(String str){
  List<MemberVO> list=new ArrayList<MemberVO>();
  try{
   BasicDBObject obj1=new BasicDBObject();
   obj1.put(“name”, new BasicDBObject(“$regex”,str+”.*”));
   // LIKE ‘%str%’
   // $lt(<) $gt(>) $le(<=) $ge(>=) $eq(==)
   DBCursor cursor=dbc.find(obj1);
   
   while(cursor.hasNext()){
    BasicDBObject obj=(BasicDBObject)cursor.next();//rs.next()와 동일. 중괄호{} 단위로 가져옴
    //{no,name,tel,addr}
    MemberVO vo=new MemberVO();
    vo.setNo(obj.getInt(“no”));
    vo.setName(obj.getString(“name”));
    vo.setTel(obj.getString(“tel”));
    vo.setAddr(obj.getString(“addr”));
    //인트와 스트링, 두 가지 뿐이다(날짜형은 없다)
    list.add(vo);
   }
   
  }catch(Exception ex){System.out.println(ex.getMessage());}
  return list;
 }

———————————————————-

 public static void main(String[] args) {
  ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
  MemberDAO dao=(MemberDAO)app.getBean(“dao”);
  //검색
  Scanner scan=new Scanner(System.in);
  System.out.println(“검색어:”);
  String name=scan.next();
  List<MemberVO> list=dao.memberFindData(name);
  for(MemberVO vo:list){
   System.out.println(vo.getNo()+” “+vo.getName()+” “+vo.getTel()+” “+vo.getAddr());
  }

}

4-5. 딜리트

public void delete(int no){
  try{
   BasicDBObject obj=new BasicDBObject();
   //db.member.remove({no:1})
   //다시 말하지만 블록(중괄호)은 베이직디비오브젝트임.
   
   obj.put(“no”, no);
   dbc.remove(obj);
   
  }catch(Exception ex){
   System.out.println(ex.getMessage());
  }
 }

——————————————–

public static void main(String[] args) {

  ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
  MemberDAO dao=(MemberDAO)app.getBean(“dao”);
  //삭제
  Scanner scan=new Scanner(System.in);
  System.out.println(“번호:”);
  int no=scan.nextInt();
  dao.delete(no);
  System.out.println(“삭제 완료”);

}

4-6. 카운트

//카운트
dbc.count()

dbc.count({no:1}) 로도 쓸 수 있다.

4-7. 업데이트

public void update(MemberVO vo){
  try{
   BasicDBObject where=new BasicDBObject();
   where.put(“no”, vo.getNo());
   //WHERE no=1
   BasicDBObject updateObj=new BasicDBObject();
   updateObj.put(“name”, vo.getName());
   updateObj.put(“tel”, vo.getTel());
   updateObj.put(“addr”, vo.getAddr());
   
   BasicDBObject obj=new BasicDBObject();
   obj.put(“$set”, updateObj);//수정
   dbc.update(where, obj);
   
  }catch(Exception ex){System.out.println(ex.getMessage());}
 }

———————————————-

 public static void main(String[] args) {
  ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
  MemberDAO dao=(MemberDAO)app.getBean(“dao”);
  //수정
  MemberVO vo=new MemberVO();
  vo.setNo(2);
  vo.setName(“박문식”);
  vo.setTel(“3333-3333”);
  vo.setAddr(“강원”);
  dao.update(vo);
  System.out.println(“데이터 수정 완료”);
}