Bigdata Engineer & Analyst Story

A Hugo theme for creative and technical writing

MongoDB Query

데이터베이스 조회 show dbs; use test;

mongotop

  • 각 collection별 read write 속도 모니터링
  • mongodb 서버에서 query 응답이 느리다면, 어떤 컬렉션에 문제가 발생하고 있는지 확인할 수 있음
  • ./mongotop –host localhost –port 27017 -u user -p ‘password’ –authenticationDatabase admin mongostat
  • query 실행 모니터링
  • DB 인스턴스의 각각 수행되고 있는 query 수와 network 사용량 등을 모니터링
  • 실행 샘플 : ./mongostat –host localhost –port 27017 -u user -p ‘password’ –authenticationDatabase admin

컬랙션

  • RDB의 Table과 같은 개념으로 데이터를 저장하는 단위
  • 하지만 RDB와 다르게 스키마를 정의하고 이에 맞는 데이터만 저장되지만, MongoDB는 모든 종류의 데이터 저장할 수 있음 -> schemaless 특징 있음

컬렉션(데이터 저장하는 단위) 조회 show collections;

Javascript 명령 지원

  • 변수 생성 및 사칙 연산
  • a=5; a*10;
  • for(i=0; i<10; i++) {print(‘hello’)};

JSON 형태 데이터 저장

  • var a = {age:25};
  • var n = {name:‘Ed’, language:[‘c’, ‘ruby’, ‘js’]};
  • var student = {name:‘Jim’, scores:[75, 99, 87.2]};

저장

  • {DB}.{collection}.save({a:99})
  • db.scores.save({a:99});
  • db.scores.find();
  • _id는 자동 생성 됨

반복 저장

  • for(i=0; i<10; i++) {db.scores.save({a:i, exam:5});};
  • db.scores.find();

조회

  • 모든 데이터 조회 -> 매개변수 없음 : db.scores.find();
  • 특정 데이터 조회 -> 매개변수는 JSON형식 : a가 2인 도큐먼트만 찾아라
    • db.scores.find({a:2}); : a가 15보다 큰거 찾아라
    • db.scores.find({a:{'$gt':15}});
  • find AND 연산 - a가 2보다 크고 4보다 작은 : db.scores.find({a:{'$gte':2, ‘$lte’:4}});
  • find IN 명령 - 배열로 와야함 : db.scores.find({a:{'$in':[2,3,4]}}); : db.scores.find({a:{'$nin':[2,3,4]}});
  • find OR 명령 : db.scores.find({$or:[{‘a’:{$lt:1}},{‘a’:{$gt:9}}]});
  • 필드 존재 유무 exam 키 가지고 있는 : db.scores.find({exam:{$exists:true}});
  • 반환 필드 선택 - a, exam 출력, _id 출력 안함 : db.scores.find({}, {a:1, exam:2, _id:0});