- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
[MongoDB] NoSql 몽고디비(MongoDB) (2) 사용법
2016.05.10 10:37
[MongoDB] NoSql 몽고디비(MongoDB) (2) 사용법
* 오늘은 몽고디비 사용법을 알아봅시다 ~
1. 데이터 삽입하기(insert) & 삽입한 데이터 조회하기
db.data
db = 리스트를 만들겠다는 의미 입나다.(내장 함수)
해석 : 리스트를 만들겠다(db.) 이름은 "data"(data.) 로 만들겠다.
* 만약 data라는 이름이 이미 존재한다면 새로 생성하지 않습니다
.insert(객체,객체...) = 데이터 삽입 함수 파라미터로 json 형태(=Map형태)로 삽입하고자하는 객체들을 , (콤마)로 구분하여 추가합니다.
* JSon 또는 Map 형태란 : { } <<하나의 객체를 나타내는 중괄호 안에 {"키":"데이터"} 형태를 말합니다
해당 키 값으로 데이터를 찾아갈 수 있습니다.
.find() = 이름이 data인 리스트의 모든 데이터를 출력합니다.
.find({조건식},{출력하고 싶은 거})
ex)
db.data.find({},{price:1}) : price만 보여주겠다
db.data.find({},{price:0}) : price제외하고 다보여주겠다.
db.data.find({},{_id:0},{price:1}) : id는 안보여주고 price만 보여주겠다.
db.data.find({fruite:/^ba/},{price:1}) : ba로 시작하는 price 값만 보여주겠다.
* ㅜㅜ설명이 미숙해서 죄송해용~
2. 데이터 삽입하기(save) & insert와 save의 차이점
save도 insert와 마찬가지로 데이터를 삽입합니다.
방법 또한 함수 이름만 틀리지 나머지는 같습니다.
* save와 insert의 차이점
일단 결론 부터 말하면,
insert는 같은 id 즉 "_id" : ObjectId("565c50f754ada8011194e6c0") << _id 값과 같은 id의 데이터를 삽입하면 에러가나지만
save는 같은 id의 데이터를 삽입하면 에러가나지 않고 이전 데이터는 없애고 새로 데이터를 갱신합니다.
* 이미 해당 아이디의 데이터가 존재하면 insert로 데이터를 삽입시 duplicate key error(중복 키 에러) 발생
* save로 삽입 시 정상삽입이 됩니다.
3. 데이터의 삭제
Ødb.users.remove() : 다삭제
Ødb.users.remove({id:"user01"}) : id가 user01인 데이터 삭제
4. 데이터의 갱신
갱신은 update() 메서드로 수행하며 2개의 매개변수가 필요하며 1번째 매개변수는 조건이고 2번째 매개변수는 변경식
* save & update 차이점
save는 이전 데이터를 지우고 새로 데이터를 삽입하는 것이고
update는 이전 데이터를 냅두고 변경하고 싶은 데이터만 선택해서 set하는 것이다.
5. 컬렉션 삭제
Ødb.컬렉션이름.drop()
6.컬럼 삭제
Ødb.users.update({id:"root"},{$unset:{address:"서울"}})
정규식
정규식 (Reqular Expression)
->문자열 패턴을 표현하기 위한 식
->정규식 만들기 /패턴/한정자
.find(정규식)
데이터를 검색하는 메소드인 find의 매개변수에 정규식 조건에 따라서 원하는 데이터를 츄릅츄릅 뽑아 낼 수 있습니다.
*정규식의 시작과 끝은 "/" (슬러시)
조건식을 알아봅시다.
한정자
-> i 대소문자 구분 안함
-> g 모든 영역에서 찾음
-> m 여러 줄에서 찾음
ex)
db.users.find({id:/user/}) : user가 포함된
db.users.find({id:/User/}) : User가 포함된 // 이때 user는 못찾습니다
- 마지막 "/" 뒤에 한정자를 넣어주면
db.users.find({id:/User/i}) : 대소문자 구분하지 않음 user,User둘다 찾음
--------------
/xx/ : xx가 포함된
/^xx/ : xx로 시작하는
/xx$/ : xx로 끝나는
ex)
db.users.find({id:/^user/}) : user로 시작하는
db.users.find({id:/01$/}) : 01로 끝나는
--------------
* : 앞에 나오는 문자 0번이상
+ : 1번 이상
? : 0또는 1번
| : or
ex)
db.users.find({id:/ro+/}) : r다음에 o가 1번이상 나와야 합니다 ~
db.users.find({id:/ro?/}) : r다음에 o가 0또는 1번 나와야 합니다 ~
db.users.find({id:/ro*/}) : r다음에 o가 0번이상 나와야 합니다 // 그냥 전부나오네...
db.users.find({id:/root|user/}) : root또는 user가 포함된
// 위에는 하나의 문자밖에 검사하지 못합니다
-----------------------
// 아래는 x다음에 문자열 검사가 가능합니다
x(?=y) : x다음에 y가 오는 // 이놈은 왜만들엇지?
x(?!y) : x다음에 y가 안오는 // 이놈은 좋지만..
ex)
db.users.find({id:/r(?=oo)/}) : r다음에 oo가 나오는
= db.users.find({id:/roo/})?? 똑같은거같지요?
db.users.find({id:/r(?!oo)/}) : r다음에 oo가 안나오는
-------------------
{숫자} : 숫자 이상 반복되는
{숫자1, 숫자2} : 숫자1이상 숫자2만큼 반복되는
ex)
db.users.find({id:/o{2}/}) : o가 2개이상 붙은 것 2이상 o가 2개연속나오면됨
db.users.find({id:/o{2,3}/}) : 2~3개가 넘으면. 2개 이상부터 3개이상 나오는 것. o가 1개~2개 연속
-----------------
[나열] ; 나열된 것 중에서 하나
[^나열] : 나열된 것 중이 아닌
[a-z] : a~z까지
ex)
db.users.find({id:/^[a-z]/}) : 알파벳 소문자로 시작하는.
db.users.find({id:/^[a-z,A-Z]/}) 알파벳 대문자 또는 소문자로 시작하는
db.users.find({id:/^[a-z,A-Z,가-힣]/}) : 알파벳 대문자 또는 소문자 또는 한글로 시작하는
db.users.find({id:/^[가-깋]/}) 한글로 시작하는
* 자바의 경우 'ㄱ'로 시작하는, 'ㄴ'로 시작하는 등의 한글유효성검사 할때 아래 조건을 사용하면 됩니다
if(>=가 && <나) : ㄱ으로 시작하는 것
else if(<다) : ㄴ으로 시작하는 것
[abcd] : a,b,c,d중에 하나 //or랑 비슷하지만 or는 문자열단위, 요놈은 문자단위
핸드폰 번호 체크할 때 사용
* 01[016789] 010,011,016.. 요런거?
---------------
\d : 숫자
\D : 숫자가 아닌
\w : 문자열
\W : 문자열이 아닌
ex) 이메일 유효성 검사원리
/\w@\w.\w/
문자열이나오고 @골뱅이 나온후 다시 문자열나오고 .점 나오고 다시 문자열나오면 이메일~
---------
대문자 A-Z : 65 ~90
소문자 a-z : 97~122
db.users.find({},{id:1}).sort({id:1}) : id의 오름차순
db.users.find({},{id:1}).sort({id:-1}) : id의 내림차순
db.users.find({},{id:1}).sort({id:-1}).limit(3) : 3개만 나옵니다
db.users.find({},{id:1}).sort({id:-1}).skip(3) : 3개이후 것 나옵니다.
db.users.find({},{id:1}).sort({id:-1}).skip(3).limit(3) :아이고... 복잡하다.순서는 상관없음
*하지만
100MB안되면 sort를 먼저하고
100MB넘어가면 순서대로입니다.
sort는 여러개 사용가능 기준은 첫번째, sort는 객체 형태로 사용하고 나머지는 숫자만 입력합니다
null은 오름차순 내림차순에 따라서 다르게 적용됩니다.
오름차순일때에는 맨앞으로
내림차순일때에는 만뒤로.?
db.users.find({},{id:1}).sort({id:1}) : 널이 맨 앞으로
db.users.find({},{id:1}).sort({id:-1}) : 널이 맨 뒤로
데이터 검색
sort된 100개의 데이터를 10개씩 출력하고 싶다
db.users.find(),limit(10)
db.users.find().skip(10).limit(10);
db.users.find().skip(20).limit(10);...
점점 느려집니다..
이때
var cursor = db.users.find() // foreach의 원리와 같습니다
cursor.next() : 다음데이터
cursor.hasnext() : 다음데이터 있는지 검사하고 가져옴
커서 : 컬렉션내의 데이터 위치를 가리키는 포인터 프로그래밍 언어에서는 Iterator(반복자)
라고 합니다. 자료구조에 상관없이 다음 데이터롤 이동할 수 있도록 만들어진 포인터 입니다.
데이터를 순차적으로 모두 접근하고자 할떄 주로 사용합니다/
자바에서는 이전에는 Enumerator라고 했습니다..
데이터베이스에서는 Cursor라고 하고, 프로그램에서는 반복자라고 부릅니다.
save & update 차이점
save는 지우고 다시 쓰는 것이고
update는 필요한 것만 set하는 것입니다
db.users.update({id:"root"},{$set:{password:"system"}})
기타 명령어들 정리(2016.01.11)
.- 데이터베이스 삭제
1) 데이터베이스 접속 : use 데이터베이스
2) 데이터베이스 삭제 : db.dropDatabase();
- 컬렉션 이름 수정
: db.기존에있는컬렉션이름.renameCollection("새로운 컬렉션이름");
- 컬렉션 목록 조회
: show collections;
* mongoDB 튜토리얼
http://www.tutorialspoint.com/mongodb/mongodb_covered_queries.htm
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86334 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78792 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95542 |
| 12 | rvest: easy web scraping with R | 졸리운_곰 | 2016.11.28 | 1370 |
| 11 |
Integrating PHP and R
| 졸리운_곰 | 2016.11.17 | 1783 |
| 10 |
R과 MySQL 데이터베이스 연결 방법
| 졸리운_곰 | 2016.11.16 | 1928 |
| 9 | rvest: easy web scraping with R | 졸리운_곰 | 2016.11.16 | 1855 |
| 8 |
knitr 패키지를 사용한 R 코드 문서화
| 졸리운_곰 | 2016.11.16 | 1389 |
| 7 | R markdown example | 졸리운_곰 | 2016.11.16 | 1193 |
| 6 |
RMarkdown을 이용한 문서 작성
| 졸리운_곰 | 2016.11.16 | 1771 |
| 5 | R makrdown을 이용해서 wordpress에 포스팅하기 | 졸리운_곰 | 2016.11.16 | 1343 |
| 4 |
R까기 책관련 예제 데이터모음 자료파일
| 졸리운_곰 | 2016.11.16 | 2102 |
| 3 |
R의설치및기본사용법.pdf
| 졸리운_곰 | 2016.05.10 | 2016 |
| 2 |
7월-4.오픈소스 통계분석 R의 이해.pdf
| 졸리운_곰 | 2016.05.10 | 1183 |
| 1 |
R Data Analysis Examples: Logit Regression
| 졸리운_곰 | 2016.05.10 | 1043 |

