Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MongoDB로 진행하는 CRUD
대구개발자그룹
Jinwook Jeong
MongoDB
Documents
• 데이터의 기본 단위는 문서
• 문서의 특징
– 4MB의 제한을 가짐
– JSON과 같이 Key-Value Pair형태로 되어 있음
http://docs.mongodb.org/
MongoDB
Collection
• 컬렉션은 문서의 모음으로, table과 같은 개념
• 스키마를 가지지 않음
http://docs.mongodb.org/
MongoDB
Query
• query의 구성은 collection, query criteria, modifer로 구성됨
http://docs.mongodb.org/
MongoDB
Data Modification
• Data modification은 create, update, delete의 operation을 이용함
• users collection에 document의 추가예
ht...
MongoDB
BSON
• BSON(Binary JSON)은 JSON의 Binary 표현
• JSON은 파워풀하지만, binary 데이터로 저장할 수 없음
– MongoDB는 BSON을 이용하여 데이터를 저장함
– 예 ...
MongoDB
Read Lock과 Write Lock
• DB별 Read Lock과 Write Lock을 가짐
• read Lock은 여러 Operation에서 공유가 가능한 반면, write olock은
하나의 Ope...
MongoDB
몽고DB 실행
• 서버실행 : mongod --dbpath d:mongo
• 몽고DB쉘 : mongo
– 데이터 조작을 위한 몽고쉘(자바스크립트 쉘)을 제공한다.
MongoDB
몽고DB의 내부적인 특징
• 컬렉션은 스키마가 없는 테이블로 생각할 수 있다.
– 데이터의 기본 단위는 문서이며, 컬렉션은 문서의 모음이다.
• 모든 문서는 문서컬렉션 내에 유일키를 가진다
• 데이터형과 ...
MongoDB
MongoDB 쉘의 기본명령어
• use [databasename]
– 데이터베이스 선택
• db
– 현재 선택된DB이름(변수) 확인
• show dbs
– show database names
• show...
MongoDB
MongoDB 쉘과 자바스크립트
• 자바스크립트의 for 루프 사용
• 함수호출
var collections=[“my”,”name”,”is”,”wook”];
for (i in collections){
do...
MongoDB
MongoDB 쉘에서의 CRUD
• create
– db.blog.insert({"key1":"value1"})
• read
– db.blog.find()
• 모든문서 반환
– db.blog.findOne...
MongoDB
MongoDB 쉘에서의 CRUD
• Update
– db.blog.update({“key1":“value1“},{“key1”:”value2”})
• 갱신하려는 문서의 조건과 업데이트 데이터 필요
– pos...
MongoDB
Operator
• Operator
– Update와 관련된 연산자
– 분류
• query and projection operators
– comparison : eq,gt,gte,lt,lte,ne,in,...
MongoDB
Operator
• aggregation pipeline operators
– Stage operators : project, match, redact, limit, skip, unwind, group,
...
MongoDB
Query Modifiers
• Modifiers
– 제한과 관련된 연산자
– comment,explain, hint, maxScan, maxTimeMS, max, min,
orderBy,returnKey...
MongoDB
주요 Operator
• push
– array에 특정 값을 append함
• The $push operator appends a specified value to an array.
– Element 마지...
MongoDB
주요 Operator
• 증감관련
– $inc (증가)
– db.blog.insert({"score":1})
– db.blog.update({"score":1},{"$inc":{"key":20}})
MongoDB
주요 Operator
• each
– multiple value를 array field에 붙여넣음
db.blog.insert({"key1":"value1"})
db.blog.update(
{"key1":"...
MongoDB
주요 Operator
• 키관련
– $set (키추가)
• db.blog.insert({"score":1})
• db.blog.update({"score":1},{"$set":{"key":10}})
– $...
MongoDB
주요 Operator
• 대소비교
– $gte >= , $lte <=, $gt >, $lt <
– db.blog.insert({"score":1})
– db.blog.find({"score":{"$gte"...
MongoDB
주요 Operator
• Size
db.food.insert({"_id" : 1, "fruit" : ["apple", "banana", "peach"]})
db.food.insert({"_id" : 2, ...
MongoDB
조건절
blog = db.analytics.findOne({url : "/blog"})
if (blog) {
blog.pageviews++;
db.analytics.save(blog);
}else {
db...
MongoDB
조건절
• Bulk기반 Upserts
– write operations의 리스트 기반으로 upsert 실행
Bulk.find(<query>).upsert().update(<update>);
Bulk.fin...
MongoDB
데이터형
• 불리언형 : {“x”:true}
• 부동소수점형 : {“x”:3.14},{“x”:3}
• 문자열형 : {“x”:”wook”}
• 날짜형 : {“x”:new Date()}
• Undefined ...
MongoDB
ObjectIds
• ObjectID
– _id의 기본 데이터형
– 전통적인 auto increment 방식의 primary 키의 대체방식으로, 다중서버에서 고
유 값을 가질수 있도록 ObjectID가 생...
MongoDB
Query - Regex
• Regex
– String match
– Digit match
• 문자열만 매칭됨을 유의
db.blog.insert({"name":"daegu"})
db.blog.find({"...
MongoDB
Performance Test
• Modifier Test
db.tester.insert({"x" : 1})
var timeInc = function() {
var start = (new Date()).g...
Upcoming SlideShare
Loading in …5
×

Mongo DB로 진행하는 CRUD

3,602 views

Published on

Mongo DB로 진행하는 CRUD
몽고디비소개 및 기본쿼리 작성방법입니다.

Published in: Software
  • Dating for everyone is here: ❶❶❶ http://bit.ly/2F7hN3u ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2F7hN3u ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Mongo DB로 진행하는 CRUD

  1. 1. MongoDB로 진행하는 CRUD 대구개발자그룹 Jinwook Jeong
  2. 2. MongoDB Documents • 데이터의 기본 단위는 문서 • 문서의 특징 – 4MB의 제한을 가짐 – JSON과 같이 Key-Value Pair형태로 되어 있음 http://docs.mongodb.org/
  3. 3. MongoDB Collection • 컬렉션은 문서의 모음으로, table과 같은 개념 • 스키마를 가지지 않음 http://docs.mongodb.org/
  4. 4. MongoDB Query • query의 구성은 collection, query criteria, modifer로 구성됨 http://docs.mongodb.org/
  5. 5. MongoDB Data Modification • Data modification은 create, update, delete의 operation을 이용함 • users collection에 document의 추가예 http://docs.mongodb.org/
  6. 6. MongoDB BSON • BSON(Binary JSON)은 JSON의 Binary 표현 • JSON은 파워풀하지만, binary 데이터로 저장할 수 없음 – MongoDB는 BSON을 이용하여 데이터를 저장함 – 예 : {"hello": "world"}  x16x00x00x00x02hellox00x06x00x00x00worldx00x00
  7. 7. MongoDB Read Lock과 Write Lock • DB별 Read Lock과 Write Lock을 가짐 • read Lock은 여러 Operation에서 공유가 가능한 반면, write olock은 하나의 Operation에서 사용가능 • 우선권 – write lock이 read lock보다 우선권을 갖는 이유로, write 작업이 많을때 DB Read작업을 할 수 없게 됨
  8. 8. MongoDB 몽고DB 실행 • 서버실행 : mongod --dbpath d:mongo • 몽고DB쉘 : mongo – 데이터 조작을 위한 몽고쉘(자바스크립트 쉘)을 제공한다.
  9. 9. MongoDB 몽고DB의 내부적인 특징 • 컬렉션은 스키마가 없는 테이블로 생각할 수 있다. – 데이터의 기본 단위는 문서이며, 컬렉션은 문서의 모음이다. • 모든 문서는 문서컬렉션 내에 유일키를 가진다 • 데이터형과 대소문자를 구분한다 – {“foo”:3}와 {“foo”:”3”}는 다르다 • 컬렉션 이름제약 – 몽고DB에서 정의한 함수명은 컬렉션이름이 될 수 없음 – ex : db.version
  10. 10. MongoDB MongoDB 쉘의 기본명령어 • use [databasename] – 데이터베이스 선택 • db – 현재 선택된DB이름(변수) 확인 • show dbs – show database names • show collections – show collections in current database • db.[collection-name].drop() – collection 삭제 • show users – show users in current database • show profile
  11. 11. MongoDB MongoDB 쉘과 자바스크립트 • 자바스크립트의 for 루프 사용 • 함수호출 var collections=[“my”,”name”,”is”,”wook”]; for (i in collections){ doStuff(db.blog[collections[i]]); } function factorial (n) { if (n <= 1) return 1; return n * factorial(n - 1); } factorial(5);
  12. 12. MongoDB MongoDB 쉘에서의 CRUD • create – db.blog.insert({"key1":"value1"}) • read – db.blog.find() • 모든문서 반환 – db.blog.findOne() • 한문서 반환 • db.blog.findOne({"key1":"value1"})
  13. 13. MongoDB MongoDB 쉘에서의 CRUD • Update – db.blog.update({“key1":“value1“},{“key1”:”value2”}) • 갱신하려는 문서의 조건과 업데이트 데이터 필요 – post.comment=[] – db.blog.update({title:"My Blog Post"},post) • Delete – db.blog.remove({“key1":“value1"}) – db.blog.remove({_id: ObjectId('55badd91c79bcbac2c3c1b95')})
  14. 14. MongoDB Operator • Operator – Update와 관련된 연산자 – 분류 • query and projection operators – comparison : eq,gt,gte,lt,lte,ne,in,nin – logical : or, and, not, nor – Element : exists, type – Evaluation : mod, regex,text,where – Geospatial : geowithin, geoIntersects,near, nearsphere – array : all, elemMatch, size, – comments : comment – Projection Operators : $, $elemMatch, meta, slice • update operators – Fields : inc, mul,rename, setonInsert, set, unset, min, max, currentDate – Array : $, addtoSet, pop, pullAll, pull, pushAll, push – Modifier : each, slice, sort, position – Bitwise : bit – Isolation : isolated
  15. 15. MongoDB Operator • aggregation pipeline operators – Stage operators : project, match, redact, limit, skip, unwind, group, sort, geoNear, out – Boolean operators : and, or, not – Set operators : setEquals, setIntersection, setUnion, setDifference, setIsSubset, anyElementTrue, allElementsTrue – Comparison operators : cmp, eq, gt, gte, lt, lte, ne – Arithmetic Operators : add, substract, multiply, divide, mod – String Operators : concat, substr, toLower, toUpper, strcasecmp – TextSearch Operators : meta – Array Operators : size – Variable Operators : map, let – Lteral Operators : literal – Date Operators : dayofYear dayofMonth, dayOfWeek, year, month, week, hour, minute, second, millisecond,dateToString – Conditional Expressions : cond, ifNull – Accumulatros : sum, avg, first, last, max, min, push, addToSet
  16. 16. MongoDB Query Modifiers • Modifiers – 제한과 관련된 연산자 – comment,explain, hint, maxScan, maxTimeMS, max, min, orderBy,returnKey,showDiskLoc,snapshot,query, http://docs.mongodb.org/manual/reference/operator/
  17. 17. MongoDB 주요 Operator • push – array에 특정 값을 append함 • The $push operator appends a specified value to an array. – Element 마지막에 item추가 – db.blog.update({}, {"$push" : {"x" : 1}}) • 마지막 요소부터 마지막 item에 추가 – db.blog.update({"score":1}, {"$push" : {"x" : 3}}) • 조건을 주어서 추가 db.blog.insert({"key1":"value1"}) db.blog.update({"key1":"value1"},{$push : {"key2":"value2"}}) http://docs.mongodb.org/manual/reference/operator/update/push/ append됨
  18. 18. MongoDB 주요 Operator • 증감관련 – $inc (증가) – db.blog.insert({"score":1}) – db.blog.update({"score":1},{"$inc":{"key":20}})
  19. 19. MongoDB 주요 Operator • each – multiple value를 array field에 붙여넣음 db.blog.insert({"key1":"value1"}) db.blog.update( {"key1":"value1"}, { $push: { scores: { $each: [ 90, 92, 85 ] } } })
  20. 20. MongoDB 주요 Operator • 키관련 – $set (키추가) • db.blog.insert({"score":1}) • db.blog.update({"score":1},{"$set":{"key":10}}) – $unset (키삭제) • db.blog.update({"score":1},{"$unset":{"key":1}})
  21. 21. MongoDB 주요 Operator • 대소비교 – $gte >= , $lte <=, $gt >, $lt < – db.blog.insert({"score":1}) – db.blog.find({"score":{"$gte":1,"$lte":2}}) • not – 1과 일치하지 않는 문서 찾기 – db.blog.find({"score":{"$ne":1}})
  22. 22. MongoDB 주요 Operator • Size db.food.insert({"_id" : 1, "fruit" : ["apple", "banana", "peach"]}) db.food.insert({"_id" : 2, "fruit" : ["apple", "kumquat", "orange"]}) db.food.insert({"_id" : 3, "fruit" : ["cherry", "banana", "apple"]}) db.food.find({"fruit":{"$size":3}})
  23. 23. MongoDB 조건절 blog = db.analytics.findOne({url : "/blog"}) if (blog) { blog.pageviews++; db.analytics.save(blog); }else { db.analytics.save({url : "/blog", pageviews : 1}) } else의 여는 괄호가 바로 오도록 주의 upsert가 없는 경우 db.analytics.update({"url" : "/blog"}, {"$inc" : {"pageviews" : 1}}, true) upsert가 있는 경우 해당숫자만큼 증가 (문서가 없으면 새로 할당) • Upserts – update의 특별한 타입. 문서가 없을때 생성, 있으면 업데이트
  24. 24. MongoDB 조건절 • Bulk기반 Upserts – write operations의 리스트 기반으로 upsert 실행 Bulk.find(<query>).upsert().update(<update>); Bulk.find(<query>).upsert().updateOne(<update>); Bulk.find(<query>).upsert().replaceOne(<replacement>); http://docs.mongodb.org/manual/reference/method/Bulk.find.upsert/ var bulk = db.blog.initializeUnorderedBulkOp(); bulk.find( {"key1":"value1"} ).upsert().replaceOne( { item: "abc123", status: "P", points: 100, } ); bulk.execute();
  25. 25. MongoDB 데이터형 • 불리언형 : {“x”:true} • 부동소수점형 : {“x”:3.14},{“x”:3} • 문자열형 : {“x”:”wook”} • 날짜형 : {“x”:new Date()} • Undefined 형 : {“x” : undefined} • 배열 : {“x”:[“a”,”b”,”c”]} • 내장문서 : {“x” : {“daegu”,”daejeon”}} • 문서 “X”의 값으로, 내장문서를 가질 수 있음 • 객체 ID형 : {“x” : objectId()} – 객체 ID형 문서의 고유한 12바이트 ID • ....
  26. 26. MongoDB ObjectIds • ObjectID – _id의 기본 데이터형 – 전통적인 auto increment 방식의 primary 키의 대체방식으로, 다중서버에서 고 유 값을 가질수 있도록 ObjectID가 생성됨 – 키구성 • Time : unix timestamp • Machine : md5 hash of machine name • Process id : pid • Counter : incrementing value starting with a random number
  27. 27. MongoDB Query - Regex • Regex – String match – Digit match • 문자열만 매칭됨을 유의 db.blog.insert({"name":"daegu"}) db.blog.find({"name":/daegu/}) db.blog.insert({"year":1990}) db.blog.find({"year":/^(199d|200d|2010)$/})
  28. 28. MongoDB Performance Test • Modifier Test db.tester.insert({"x" : 1}) var timeInc = function() { var start = (new Date()).getTime(); for (var i=0; i<100000; i++) { db.tester.update({}, {"$inc" : {"x" : 1}}); db.getLastError(); } var timeDiff = (new Date()).getTime() - start; print("Updates took: "+timeDiff+"ms"); } timeInc()

×